You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改Django框架下CKEditor默认外层div包装器的类名

你之前的写法不生效的原因是:给CKEditorWidget传入的attrs参数只会作用于编辑器内部的textarea元素,外层的django-ckeditor-widget类是django-ckeditor包自动包裹的div容器上的默认类,无法通过该参数直接修改。

可行解决方案如下:

方案1:自定义Widget继承CKEditorWidget,重写渲染逻辑(推荐,侵入性低,可灵活控制单个实例类名)

先定义自定义Widget:

from ckeditor.widgets import CKEditorWidget

class CustomCKEditorWidget(CKEditorWidget):
    def render(self, name, value, attrs=None, renderer=None):
        # 调用父类方法获取原生渲染结果
        original_html = super().render(name, value, attrs, renderer)
        # 替换默认类名,若需要保留原有类可改为 replace('django-ckeditor-widget', 'django-ckeditor-widget MyCustomClass')
        modified_html = original_html.replace('django-ckeditor-widget', 'MyCustomClass')
        return modified_html

在表单中使用自定义Widget即可:

class PostAdminForm(forms.ModelForm):
    content = forms.CharField(widget=CustomCKEditorWidget())
    class Meta:
        model = Post
        # 需根据需求补全fields配置
        fields = ["content"]

方案2:覆写CKEditor的全局Widget模板(适合批量修改所有CKEditor实例的外层类)

操作步骤:

  • 在你的Django项目templates目录下创建ckeditor文件夹,新建widget.html文件
  • 复制django-ckeditor原生widget.html的全部内容,将外层div的class属性值修改为你的自定义类名即可生效

内容的提问来源于stack exchange,提问作者UdoQQ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 06:42:00