我正在尝试使用多个 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:
urlpatterns = patterns('',
...
url(r'^tinymce/', include('tinymce.urls')),
)
设置.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,
}
member_forums.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 和多个 MessageForm。
当我在 HTML 中注释掉 MessageForms 时,ThreadForm 似乎可以工作,但是当我取消注释它们时,ThreadForm 加载了一个不会更新的 TinyMCE 皮肤(添加文本不会使撤消按钮显示为启用,即使它是),当我提交表单时,表单的正文条目丢失,导致form.is_valid
失败。
我只有{{ thread_form.media }}
在我的模板标题中,而 MessageForms 没有。迭代:
{% for message_form in message_forms %}
{{ message_form.media }}
{% endfor %}
也没有做任何好事。
在做了一些研究之后,似乎 TinyMCE 在加载 MessageForms 时被初始化了太多次,导致数据在表单提交期间丢失(在顶级答案中编辑:TinyMCE with Django: "This field is required")
我不知道如何让它发挥作用。任何帮助或指示将不胜感激。