
本文详解如何在 django 项目中(使用 django-ckeditor 6.7.0)永久关闭 ckeditor 4.22.1+ 版本引入的“此版本不安全,请升级”红色通知栏,通过正确配置 `config.versioncheck = false` 实现静默禁用。
CKEditor 4 自 4.22.0 版本起新增了主动版本检查机制,会在编辑器加载时向官方 CDN 发起请求(如 https://cdn.ckeditor.com/.../version.json),比对本地版本与最新 LTS 版本,并在顶部显示醒目的黄色/红色警告条:“This CKEditor X.X.X version is not secure. Consider upgrading…”。该行为不受 CKEDITOR_UPDATE_NOTIFICATION = False 或 ignoreUpdates: true 等旧参数控制——因为这些并非 CKEditor 4 原生配置项,而是某些第三方封装(如早期 django-ckeditor 插件)的自定义开关,在新版中已失效。
✅ 正确解决方案是:在 CKEditor 的 JavaScript 运行时配置中显式设置 config.versionCheck = false。由于你使用的是 django-ckeditor,需将其注入到 CKEDITOR_CONFIGS 的顶层配置对象中(注意:不是嵌套在 toolbar_Custom 或其他子项内)。
请修改 settings.py 中的 CKEDITOR_CONFIGS,在 "default" 配置的最外层添加 'versionCheck': False(注意:django-ckeditor 会自动将 Python False 转为 JS false):
CKEDITOR_CONFIGS = {
"default": {
"skin": "moono",
"toolbar": "Custom",
"allowedContent": True,
"extraAllowedContent": "object[id,name,width,height];",
"extraPlugins": "iframe",
"iframe_attributes": {
"sandbox": "allow-scripts allow-same-origin allow-popups allow-presentation allow-forms",
"allowfullscreen": "",
"loading": "lazy",
"referrerpolicy": "no-referrer-when-downgrade",
},
# ? 关键修复:禁用版本检查(必须放在顶层!)
"versionCheck": False,
"toolbar_Custom": [
# ...(保持原有 toolbar 配置不变)
],
"language": "en",
}
}⚠️ 注意事项:
- versionCheck 必须作为 CKEDITOR_CONFIGS["default"] 的一级键(top-level key),而非 toolbar_Custom 或 iframe_attributes 的子属性,否则无效;
- 无需额外引入 JS 文件或修改模板 —— django-ckeditor 会自动将该配置序列化为 CKEditor 初始化脚本中的 config.versionCheck = false;;
- 此设置仅隐藏警告,不解决实际安全风险。强烈建议同步升级 CKEditor 4 至最新 LTS 版本(如 4.24.0-lts),方法是升级 django-ckeditor 包并确认其捆绑的 CKEditor 资源版本(可通过浏览器开发者工具 Network 标签页查看 ckeditor.js 请求 URL 中的版本号);
- 若仍不生效,请清空浏览器缓存及 Django 的静态文件缓存(运行 python manage.py collectstatic --clear),确保新配置被重新加载。
完成上述配置后重启 Django 开发服务器,进入 Admin 后的 RichTextUploadingField 将不再显示任何版本警告,编辑器功能与样式保持完全一致。该方案简洁、兼容性强,是当前社区验证有效的标准解法。










