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())
urls.py:
urlpatterns = patterns('',
...
url(r'^tinymce/', include('tinymce.urls')),
)
settings.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 %}
テンプレートには 1 つの ThreadForm と複数の MessageForms があります。
HTML で MessageForms をコメント アウトすると、ThreadForm は機能しているように見えますが、コメントを外すと、ThreadForm が更新されない TinyMCE スキンをロードします (テキストを追加しても、元に戻すボタンが有効になっているように見えません)。 )、フォームを送信すると、フォームの本文エントリが欠落し、form.is_valid
失敗します。
私はテンプレートヘッダーにのみあり{{ thread_form.media }}
、MessageForms には何もありません。以下を繰り返す:
{% for message_form in message_forms %}
{{ message_form.media }}
{% endfor %}
も何の役にも立ちませんでした。
いくつかの調査を行った後、MessageForms が読み込まれるときに TinyMCE が初期化される回数が多すぎて、フォームの送信中にデータが失われるようです ( Django を使用した TinyMCE: "This field is required"に対するトップの回答の編集) 。
これを機能させる方法がわかりません。ヘルプやポインタをいただければ幸いです。