首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CKEditor自定义配置不起作用,它在管理面板内外有不同的选项

CKEditor自定义配置不起作用,它在管理面板内外有不同的选项
EN

Stack Overflow用户
提问于 2020-12-03 22:41:34
回答 2查看 430关注 0票数 0

基于customizing CKEditor editor,我在settings.py中声明了一个自定义配置

代码语言:javascript
复制
CKEDITOR_CONFIGS = {
    'awesome_ckeditor': {
        'toolbar': 'Basic',
        'toolbar_CustomToolbarConfig': [
            {'name': 'clipboard', 'items': ['Bold', '-', 'Undo', 'Redo']},
            {'name': 'paragraph', 'items': ['NumberedList', 'BulletedList', '-', 'BidiLtr', 'BidiRtl', 
                '-',  'spellchecker' ]},
        ],
    },
}

此配置在models.py中使用

代码语言:javascript
复制
description = RichTextField(config_name='awesome_ckeditor', blank=True)

在html文件中,我以这种方式使用ckeditor:

代码语言:javascript
复制
<form action="{% url 'contact' %}" method="POST">
    {% csrf_token %}
    <div>
        <textarea   name="message" 
                    id="message" 
                    class="form-control"></textarea>
    </div>
</form>

<script type="text/javascript" src="{% static "ckeditor/ckeditor-init.js" %}"></script>
<script type="text/javascript" src="{% static "ckeditor/ckeditor/ckeditor.js" %}"></script>
<script src="//cdn.ckeditor.com/4.15.0/full/ckeditor.js"></script>
<script>
    CKEDITOR.replace( 'message');
    CKEDITOR.config.allowedContent = true;
    CKEDITOR.config.removeFormatAttributes = '';
</script>

此配置不起作用。如何加载?

在声明此配置之前,我在管理面板内部和外部得到了不同的编辑器选项:

内部管理面板:

在它之外:

如何修复此配置,使所有页面都有相同的配置?

EN

Stack Overflow用户

发布于 2020-12-04 04:40:41

试试这个:

代码语言:javascript
复制
CKEDITOR_CONFIGS = {
    'default': {
        'toolbar': 'Custom',
        'toolbar_Custom': 
            [{'name': 'clipboard', 'items': ['Bold', '-', 'Undo', 'Redo']},
            {'name': 'paragraph', 'items': ['NumberedList', 'BulletedList', '-', 'BidiLtr', 'BidiRtl', '-',  'spellchecker']}],
    }
}

检查器将查找admin的默认设置。

  1. 如果您想为非管理员用户提供不同的工具条,则需要像以前一样指定它:

代码语言:javascript
复制
description = RichTextField(config_name='awesome_ckeditor', blank=True)

并在settings.py中更新CKEDITOR_CONFIGS

  1. 如果你想对所有人使用相同的设置,你只需要这样做:

代码语言:javascript
复制
description = RichTextField(blank=True)

但是你的settings中必须有default

更新在看到op的答案后,op的答案将我指出了您的op代码中的另一个问题,我之前遗漏了这个问题。

前面,我没有注意到op正在使用js将ckeditor插入到message中。这不是django-ckeditor的预期用途。

在你的模型中,你有

代码语言:javascript
复制
description = RichTextField(blank=True)
# not need to put "config_name" beause it is set to "default"

你应该做的是在你的模板中,使用{{ form}}代替。

确保在contact视图中有form

代码语言:javascript
复制
<form action="{% url 'contact' %}" method="POST">
    {% csrf_token %}

{{form.media}}
{{form}}

</form>

删除以下内容:

代码语言:javascript
复制
<script>
    CKEDITOR.replace( 'message');
    CKEDITOR.config.allowedContent = true;
    CKEDITOR.config.removeFormatAttributes = '';
</script>
票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65128154

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档