如何在 Django CKEditor 中禁用安全版本警告提示

11次阅读

如何在 Django CKEditor 中禁用安全版本警告提示

本文介绍如何彻底屏蔽 django admin 中 `richtextuploadingfield` 所加载的 ckeditor 4 显示的“版本不安全”升级提醒(如 `ckeditor 4.22.1 is not secure`),通过正确配置 `config.versioncheck = false` 实现静默关闭,无需升级底层编辑器。

CKEditor 4 自 4.22.0 版本起引入了内置的安全版本检查机制,会在编辑器初始化时向官方 cdn 发起请求,比对当前版本与最新 LTS 版本,并在工具栏右下角弹出醒目的黄色警告提示(例如:this CKEditor 4.22.1 version is not secure. Consider upgrading to the latest one, 4.24.0-lts.”)。该行为无法通过 django-CKEditor 的 python 层设置(如 CKEDITOR_UPDATE_NOTIFICATION = False)禁用,也无法靠 “ignoreUpdates”: true 或 “updateCheck”: false 等无效键名解决——因为 CKEditor 4 原生配置中对应的属性名为 versionCheck,且其值必须为布尔类型 false。

✅ 正确解决方案是在 CKEDITOR_CONFigs 的对应配置项中,直接注入原生 javaScript 配置字段 versionCheck: false

# settings.py 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",         },         # ? 关键:禁用版本检查(必须小写驼峰,布尔值 false)         "versionCheck": False,          "toolbar_Custom": [             # ...(保持原有 toolbar 配置不变)         ],         "language": "en",     } }

⚠️ 注意事项:

  • versionCheck 是 CKEditor 4 原生 js 配置项(官方文档),不是 Django-CKEditor 封装的 Python 参数,因此必须作为字典键直接写入 CKEDITOR_CONFIGS 中;
  • 值必须为 Python 的 False(会序列化为 JS 的 false),不可写作字符串 “false” 或 “False”;
  • 此配置仅阻止检查行为与提示显示,不会影响编辑器功能,也不代表跳过真实安全风险——建议长期仍应通过升级 django-ckeditor 及其绑定的 CKEditor 4 资源(如替换 ckeditor/ckeditor.js)来获取安全补丁;
  • 若使用自定义 CKEditor 4 构建包(如从官网下载),请确保 ckeditor.js 文件本身未被篡改或缓存旧版;可配合浏览器硬刷新(Ctrl+Shift+R)验证警告是否消失。

完成配置后,重启 Django 开发服务器,进入 Admin 页面打开任意含 RichTextUploadingField 的表单,即可确认右下角警告已完全消失。该方案兼容 django-ckeditor==6.7.0 及所有基于 CKEditor 4.x 的版本,稳定可靠,是目前最简洁、无副作用的禁用方式。

text=ZqhQzanResources