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

Django-ckeditor模板路径缺失报错排查求助

解决Django集成django-ckeditor时TemplateDoesNotExist: ckeditor/widget.html的问题

你碰到的这个模板找不到的问题,大概率是配置环节漏了几个关键点,我帮你梳理下常见的排查方向和解决办法:

1. 确认INSTALLED_APPS配置完整

你可能漏加了ckeditor_uploader到INSTALLED_APPS里。虽然你安装了django-ckeditor,但上传相关的功能(包括RichTextUploadingField)依赖这个子应用,而且它的模板查找逻辑需要这个app在INSTALLED_APPS中。修改你的settings.py:

INSTALLED_APPS = [
    # 其他默认应用...
    'ckeditor',
    'ckeditor_uploader',  # 必须加上这个
    # 你的自定义应用...
]

注意顺序,ckeditor要放在ckeditor_uploader前面,这样模板查找会优先从正确的目录读取。

2. 重新执行collectstatic并验证文件

你提到运行manage.py collectstatic只新增了2个文件,这明显有问题——django-ckeditor包含大量静态资源和模板文件,说明collectstatic没有正确收集ckeditor的文件。

先检查你的STATIC_ROOT设置是否指向了正确的目录,然后重新执行命令(加上--clear参数清空旧文件,确保重新收集):

python manage.py collectstatic --clear

执行完成后,去你的STATIC_ROOT目录下检查,应该能看到ckeditor/和ckeditor_uploader/两个文件夹,并且ckeditor/templates/ckeditor/widget.html文件确实存在。

3. 确保模板加载配置正确

检查settings.py中的TEMPLATES配置,确保APP_DIRS设置为True——这个参数控制Django是否自动从各个app的templates目录加载模板,如果设为False,Django只会从DIRS指定的自定义模板目录查找,自然找不到ckeditor app里的widget.html:

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [BASE_DIR / 'templates'],  # 你的自定义模板目录
        'APP_DIRS': True,  # 这个必须设为True
        'OPTIONS': {
            'context_processors': [
                # 默认的上下文处理器...
            ],
        },
    },
]

4. 检查模型字段的导入路径是否正确

确认你导入的字段类是正确的:

  • 如果使用RichTextField,导入路径是from ckeditor.fields import RichTextField
  • 如果使用RichTextUploadingField,导入路径是from ckeditor_uploader.fields import RichTextUploadingField

有时候不小心导入错了类(比如从ckeditor_uploader导入RichTextField),也会导致模板路径指向错误。

按照上面的步骤逐一排查,应该能解决模板找不到的问题。我之前遇到过类似的情况,就是漏加了ckeditor_uploader到INSTALLED_APPS,加上之后重新执行collectstatic就正常了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 03:42:46