Django-ckeditor渲染完整的小部件,而不是我的自定义小部件



我在使用ckeditor的用户设置中定义了一些自定义小部件。在一个页面上,我尝试使用这个自定义模板,它没有显示一个自定义的小部件,它显示了一个完整的小部件。

在本例中,我使用了一个来自ajax请求的表单。

我的模型:

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

}

我假设你所说的HTML文件是一个Django模板。

看起来你实际上并没有使用你在表单中定义的文本区。因此,不使用自定义的data-config属性。

如果你可以访问模板中的表单,你应该使用{{ form.text_area_content }}来呈现你定义的字段

如果我理解你想要实现的目标,文档提到你可以在RichTextField或使用CKEditorWidget时引用你的自定义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')
    )

然后必须确保使用模板标签呈现表单(如@jaap3的答案),更新docs示例,并假设您将表单作为form = CreateCommentForm()传递给视图:

<form>
    {{ form.media }}
    {{ form.as_p }}
    <input type="submit"/>
</form>

最新更新