2016-07-05 9 views
0

私はckeditorを使って自分の設定にカスタムウィジェットを定義します。あるページではこのカスタムテンプレートを使用しようとしましたが、カスタムウィジェットは表示されません。フルウィジェットで表示されます。django-ckeditorは私のカスタムウィジェットの代わりにフルウィジェットをレンダリングします

この場合、私はajaxリクエストから1つのフォームを使用します。

マイモデル:

class Comment(models.Model): 
    content = models.CharField(max_length=settings.COMMENT_TEXT_LIMIT if hasattr(settings, "COMMENT_TEXT_LIMIT") else 10000) 

マイ形式:

class CreateCommentForm(IdeiaForm): 
    content = forms.CharField(
    max_length=settings.COMMENT_TEXT_LIMIT if hasattr(settings,  "COMMENT_TEXT_LIMIT") else 10000, 
    required=True, 
    widget=forms.Textarea(attrs={'data-config': json_encode(getattr(settings, 'CKEDITOR_CONFIGS', None)['comment'])})) 

と私のHTMLファイル:

<textarea id="text_area_content" name="content" class="form-control" placeholder="Deixe seu comentário" data-url-login="{% url 'account:is_logged' %}" data-trigger="login" data-token="{{ csrf_token }}"></textarea> 

私のsettings.py:

CKEDITOR_CONFIGS = { 
    'default': { 
     'toolbar': 'Basic', 
    }, 
    'comment': { 
     'toolbar': 'Custom', 
     'toolbar_Custom': [ 
      ['Bold', 'Italic'], 
      ['CodeSnippet'], 
     ], 
     'entities': False, 
     'extraPlugins': ','.join([ 
      'autolink', 'dialog', 
      'codesnippet','autogrow','placeholder', 
    ]), 
}, 

}

+1

'' CKEDITOR_CONFIGS''が定義されていない場合、 'json_encode(getattr(settings、 'CKEDITOR_CONFIGS'、None)['comment']'はKeyErrorを送出します。 これはすべきです – jaap3

+0

「AJAXリクエストから来たフォーム」はおそらくあなたのビューを添付していると思いますか?いいえ、おそらく 'json_encode(getattr(settings、 'CKEDITOR_CONFIGS'、{}) – tutuDajuju

答えて

0

あなたが話しているHTMLファイルがDjangoテンプレートであると仮定しています。

フォームに定義したテキストエリアを実際に使用していないようです。したがって、カスタムのdata-config属性は使用されません。

テンプレート内のフォームにアクセスできる場合は、定義したフィールドをレンダリングするのに{{ form.text_area_content }}を使用する必要があります。

0

私はあなたが達成しようとしているものを理解していれば、ドキュメントがCKEditorWidgetを使用する際にRichTextFieldまたは例えばいずれかあなたカスタムCKEditorバージョンの設定を参照することができます言及:

from ckeditor.widgets import CKEditorWidget 


class CreateCommentForm(IdeiaForm): 
    content = forms.CharField(
     max_length=getattr(settings, "COMMENT_TEXT_LIMIT", 10000), 
     required=True,widget=CKEditorWidget(config_name='comment') 
    ) 

あなたはその後、確認する必要がありますあなたform = CreateCommentForm()として、(@のjaap3の答えのように)テンプレートタグを使用してドキュメントの例を更新し、ビューにフォームを渡していると仮定すると、フォームをレンダリング:

<form> 
    {{ form.media }} 
    {{ form.as_p }} 
    <input type="submit"/> 
</form> 
関連する問題