django admin中的CKEditor配置

时间:2018-06-05 22:28:32

标签: python django ckeditor ckeditor4.x

我需要在Django的管理面板中添加richtextfield,所以我选择了CKEditor,但我在配置方面遇到了一些问题:

当我尝试在django管理面板中移动一行(使用Enter键)编辑器出于某种原因在我的文本中添加p标签,我不需要(我的意思是在管理编辑器中,不是在模板中)。我可以以某种方式停用它吗?或者使用br代码替换?

enter image description here

我使用CKEditor的默认配置。

settings.py

CKEDITOR_CONFIGS = {
    'awesome_ckeditor': {
        'toolbar': 'Basic',
    },
}

models.py

class Section_1(models.Model):
    order = models.IntegerField(blank=True, default=0)
    picture = models.ImageField(blank=True)
    text = RichTextField(max_length=200, blank=True)
    ytlink = models.URLField(blank=True)

        def __str__(self):
        return self.text

    class Meta:
        verbose_name = 'Секция 1'
        verbose_name_plural = 'Секция 1'

模板集成:

<div class="main-screen__middle-title">
{% for sec_1 in sec_1 %}
{% if sec_1.order == 1 %}
<h4 class="main-screen__middle-title_active" data-mScreen="mscreen{{ 
sec_1.order }}">{{ sec_1.text }}</h4>
{% else %}
<h4 data-mScreen="mscreen{{ sec_1.order }}">{{ sec_1.text }}</h4>
{% endif %}
{% endfor %}

</div>

因此,当我打开没有{{ sec_1.text| safe }}的模板时,我看到了这一点:

enter image description here

如果我使用它,CKEditor只是忽略h4标签:

enter image description here

问题是:

1)如何在管理面板中删除自动添加'p'

2)如果我对我的变量使用|safe,如何不忽略外部html标签?

2 个答案:

答案 0 :(得分:1)

如果您不希望将文本换行,则可以选择插入换行符,因为默认情况下需要p标记进行换行。

config.enterMode = CKEDITOR.ENTER_P;
  

您需要在CKEditor的 config.js 文件中添加以下行:

CKEDITOR.editorConfig = function (config)
{
   config.enterMode = CKEDITOR.ENTER_BR;

   ...
};

或者如果你想包装div标签,那么

config.enterMode = CKEDITOR.ENTER_DIV;

答案 1 :(得分:1)

找到关于django的答案:

settings.py

CKEDITOR_CONFIGS = {
    'default': {
        'toolbar': 'Basic',
        **'enterMode': 2,** 
    },
    'awesome_ckeditor':{
        'toolbar': 'Custom',
        'toolbar_Custom': [
            [ 'Bold','Italic','Underline','Strike','- 
','Link','Unlink','Anchor','-', 'Styles','Format','Font','FontSize','-', 
'Image' ]
        ]
    },
}