0

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',
    ]),
},

}

4

2 に答える 2

0

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

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

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

于 2016-07-07T08:20:01.747 に答える
0

あなたが達成しようとしていることを理解していれば、ドキュメントには、カスタム CKEditor 設定を参照できることが記載されRichTextFieldていCKEditorWidgetます。

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')
    )

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

<form>
    {{ form.media }}
    {{ form.as_p }}
    <input type="submit"/>
</form>
于 2016-07-07T08:20:03.437 に答える