多种形式的DjangoTinyMCE

2024-10-02 00:37:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图创建一个包含多个TinyMCE编辑器实例的HTML页面。编辑器的数量因请求而异;因此我无法枚举它们并单独初始化它们。这是我的代码:

在视图.py公司名称:

from tinymce.widgets import TinyMCE
class ThreadForm(forms.Form):
    subject = forms.CharField(max_length=300, widget=forms.TextInput(attrs={'size':'100'}))
    body = forms.CharField(widget=TinyMCE())
class MessageForm(forms.Form):
    thread_pk = forms.IntegerField()
    body = forms.CharField(widget=TinyMCE())

在网址.py公司名称:

^{pr2}$

在设置.py公司名称:

INSTALLED_APPS = (
    ...
    'tinymce',
)
...
TINYMCE_DEFAULT_CONFIG = {
    'selector': 'textarea',
    'theme': 'advanced',
    'width': 600,
    'height': 300,
    'theme_advanced_toolbar_location': 'top',
    'theme_advanced_buttons1': 'bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,bullist,numlist,|,outdent,indent,hr,|,undo,redo',
    'theme_advanced_buttons2': 'cut,copy,paste,pastetext,pasteword,|,search,replace,|,link,unlink,charmap,|,visualaid,table,|,blockquote,sub,sup,|,preview,code,emotions,image',
    'theme_advanced_buttons3': '',
    'plugins': 'paste,table,spellchecker,searchreplace,emotions',
    'theme_advanced_resizing': True,
}

会员_论坛.html公司名称:

...
{% block headers %}
{{ thread_form.media }}
{% endblock %}
...
<table id="new_thread_table">
    {{ thread_form.as_table }}
</table>
...
{% for message_form in message_forms %}
    <table class="new_message_table">
        {{ message_form.as_table }}
    </table>
    ...
{% endfor %}

模板中有一个ThreadForm和多个MessageForms。在

当我注释掉HTML中的MessageForms时,ThreadForm似乎可以工作,但是当我取消注释它们时,ThreadForm加载的TinyMCE皮肤不会更新(添加文本不会使undo按钮显示为启用状态),当我提交表单时,表单的body条目丢失,导致form.is_valid失败。在

我的模板头中只有{{ thread_form.media }},没有消息表单。迭代:

{% for message_form in message_forms %}
    {{ message_form.media }}
{% endfor %}

也没做什么好事。在

在做了一些研究之后,在加载MessageForms时,TinyMCE似乎被初始化了太多次,导致在表单提交过程中数据丢失(编辑在顶部回答:TinyMCE with Django: "This field is required"

我不知道该怎么做。任何帮助或建议将不胜感激。在


Tags: pyform名称表单messagetable公司forms
2条回答

删除了Django TinyMCE并开始使用tinymce4.0.21。它现在工作得很好。在

在视图.py公司名称:

...
class ThreadForm(forms.Form):
    subject = forms.CharField(max_length=300, widget=forms.TextInput(attrs={'size':'100'}))
    body = forms.CharField(widget=forms.Textarea(attrs={'class':'thread'}))
...

会员_论坛.html公司名称:

^{pr2}$

在线程.js公司名称:

tinyMCE.init({
    selector: "textarea.thread",
    theme: "modern",
    ...
});

tinyMCE.init({
    selector: "textarea.message",
    theme: "modern",
    ...
});

TinyMCE使用id指定哪个textarea应该是TinyMCE,id在HTML中应该是唯一的。因为我的尸体都被称为Django的尸体form.as U表格使用相同的id呈现它们。当TinyMCE尝试将编辑器分配给id时,当它到达具有相同id的第二个字段时失败。类似问题:

TinyMCE not working when loading two textareas

我换了MessageForm.body到MessageForm.body1这让线状的TinyMCE像个符咒。现在我需要遍历并更改每个MessageForm的id。但应该有更好的解决办法。TinyMCE应该能够呈现所有的文本区域。可能会把身份证全部删除?在

相关问题 更多 >

    热门问题