不能在 Django 模板中使用 CKEDITOR

Can't use CKEDITOR in django template

我使用的是没有模型的表单 class。

class ClubWallForm(forms.Form):

    title = forms.CharField(label='Post title', max_length=100)
    description = RichTextField()
    imgURL = forms.CharField(label='Post image url', max_length=100)
    filefield = forms.FileField( label='Select a file',validators=[validate_file_extension] )

在我的模板中,我使用了

`        {% for field in form %}
            <div class="fieldWrapper">
                {{ field.errors }}
                {{ field.label_tag }}: {{ field }}
            </div>
        {% endfor %}`

CKEDITOR 没有显示在我的模板中。 这就是我得到的。

在我的视图中,它尝试使用 ipdb 并发现该表单只有字段 title imgurlfilefield

您有两个问题:

  1. RichTextField 是一个 model 字段。 RichTextFormField是对应的表单字段。
  2. 您没有在模板中处理表单媒体。这是概述in the documentation.

终于得到了朋友的答复。 它是为了取代

description = RichTextField()

description = forms.CharField(label='Description',
                   widget=forms.Textarea(attrs={'class': 'ckeditor'}))

里面forms.py 它正在工作

您还可以使用小部件调整
首先通过

安装它
pip install django-widget-tweaks

然后将其加载到您的 模板 文件中

{% load wiget_tweaks %}

也在您的站点中使用 this header

<script src="https://cdn.ckeditor.com/4.16.1/standard/ckeditor.js"></script>

现在您可以将 class 设置为您的表格,而无需在 forms.py 中进行更改 所以模板文件应该是这样的

{{ form.description|add_class:"ckeditor" }}

第二种方式是: 只需在模板文件中使用此代码

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