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

时间:2016-07-05 14:05:30

标签: javascript django 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',
    ]),
},

}

2 个答案:

答案 0 :(得分:0)

我假设您所说的HTML文件是Django模板。

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

如果您有权访问模板中的表单,则应使用{{ form.text_area_content }}呈现您定义的字段。

答案 1 :(得分:0)

如果我了解您要实现的目标,文档中提到您可以在RichTextField中引用自定义CKEditor设置,或者例如在使用CKEditorWidget时< / p>

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>