0

我在我的设置中为使用 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>

我的设置.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 设置RichTextFieldCKEditorWidget

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 回答