Django-CKEditor-5 全功能工具栏配置完整指南
发布时间 - 2026-01-26 00:00:00 点击率:次本文详解如何在 django-ckeditor-5 中启用完整工具栏(如字体样式、表格、代码块、图片高级设置等),替代 ckeditor 4 的 `'toolbar': 'full'` 写法,提供可直接复用的 `ckeditor_5_configs` 配置及模型集成方法。
Django-CKEditor-5(基于 CKEditor 5 构建)与旧版 CKEditor 4 在配置方式上有根本性差异:它不再支持 'toolbar': 'full' 这类简写模式,而是要求显式声明所需工具栏项(buttons)、区块工具栏(blockToolbar)、插件配置(如 image、table、heading)及扩展选项(如字体颜色、表格样式)。以下为生产环境推荐的完整配置方案。
✅ 正确配置 CKEDITOR_5_CONFIGS
在 settings.py 中定义 CKEDITOR_5_CONFIGS 字典,建议至少配置一个名为 'extends' 的完整配置项(区别于精简的 'default'):
# settings.py
# 可选:自定义调色板(用于表格/字体背景色)
customColorPalette = [
{'color': 'hsl(4, 90%, 58%)', 'label': 'Red'},
{'color': 'hsl(340, 82%, 52%)', 'label': 'Pink'},
{'color': 'hsl(291, 64%, 42%)', 'label': 'Purple'},
{'color': 'hsl(262, 52%, 47%)', 'label': 'Deep Purple'},
{'color': 'hsl(231, 48%, 48%)', 'label': 'Indigo'},
{'color': 'hsl(207, 90%, 54%)', 'label': 'Blue'},
]
CKEDITOR_5_CONFIGS = {
# 基础配置(仅含常用按钮)
'default': {
'toolbar': ['heading', '|', 'bold', 'italic', 'link', 'bulletedList', 'numberedList', 'blockQuote', 'imageUpload'],
},
# 【推荐】全功能配置 —— 替代 CKEditor 4 的 'full' 模式
'extends': {
'blockToolbar': [
'paragraph', 'heading1', 'heading2', 'heading3',
'|', 'bulletedList', 'numberedList', '|', 'blockQuote'
],
'toolbar': [
'heading', '|',
'outdent', 'indent', '|',
'bold', 'italic', 'underline', 'strikethrough', 'code',
'subscript', 'superscript', 'highlight', '|',
'codeBlock', 'sourceEditing', '|',
'insertImage', 'mediaEmbed', '|',
'bulletedList', 'numberedList', 'todoList', '|',
'blockQuote', 'insertTable', '|',
'fontSize', 'fontFamily', 'fontColor', 'fontBackgroundColor', '|',
'removeFormat', 'link',
],
# 图片上传与样式配置
'image': {
'toolbar': [
'imageTextAlternative', '|',
'imageStyle:alignLeft', 'imageStyle:alignRight',
'imageStyle:alignCenter', 'imageStyle:side'
],
'styles': ['full', 'side', 'alignLeft', 'alignRight', 'alignCenter']
},
# 表格增强功能(含边框/背景色自定义)
'table': {
'contentToolbar': [
'tableColumn', 'tableRow', 'mergeTableCells',
'tableProperties', 'tableCellProperties'
],
'tableProperties': {
'borderColors': customColorPalette,
'backgroundColors': customColorPalette
},
'tableCellProperties': {
'borderColors': customColorPalette,
'backgroundColors': customColorPalette
}
},
# 标题级别定义(支持 class 属性,便于 CSS 定制)
'heading': {
'options': [
{'model': 'paragraph', 'title': 'Paragraph', 'class': 'ck-heading_paragraph'},
{'model': 'heading1', 'view': 'h1', 'title': 'Heading 1', 'class': 'ck-heading_heading1'},
{'model': 'heading2', 'view': 'h2', 'title': 'Heading 2', 'class': 'ck-heading_heading2'},
{'model': 'heading3', 'view': 'h3', 'title': 'Heading 3', 'class': 'ck-heading_heading3'},
]
}
},
# 列表增强(支持编号起始值、倒序、样式)
'list': {
'properties': {
'styles': True,
'startIndex': True,
'reversed': True,
}
}
}✅ 在模型中

确保已安装 django-ckeditor-5 并完成基础配置(如 STATIC_URL、MEDIA_URL、MEDIA_ROOT)。然后在模型字段中指定 config_name='extends':
# models.py
from django.db import models
from ckeditor_5.fields import CKEditor5Field
class Article(models.Model):
title = models.CharField(max_length=200)
# 使用完整工具栏配置
content = CKEditor5Field('Content', config_name='extends')
def __str__(self):
return self.title⚠️ 注意事项:CKEditor5Field 不再接受 config_name='default' 以外的字符串作为快捷别名;必须在 CKEDITOR_5_CONFIGS 中明确定义该键。所有工具栏项名称(如 'codeBlock', 'sourceEditing', 'todoList')需与 CKEditor 5 官方插件名 严格一致,拼写错误将导致按钮不显示。若使用 sourceEditing(源码编辑),需确保后端允许 HTML 存储(默认已开启),并注意 XSS 防护(建议配合 bleach 库清洗输出)。自定义 CSS(通过 CKEDITOR_5_CUSTOM_CSS)或文件存储(CKEDITOR_5_FILE_STORAGE)为可选项,按需启用。
完成配置后,重启 Django 开发服务器,访问 Admin 或表单页面即可看到功能完备的 CKEditor 5 编辑器——真正实现“所见即所得”的专业富文本体验。
# css
# html
# go
# 工具
# 后端
# django
# 区别
# red
# igs
# xss
# 字符串
# default
# table
# 自定义
# 背景色
# 上有
# 所需
# 这类
# 可选
# 可直接
# 重启
# 表单
# 编辑器
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel如何配置和使用队列处理异步任务_Laravel队列驱动与任务分发实例
公司门户网站制作流程,华为官网怎么做?
如何在云指建站中生成FTP站点?
Laravel项目结构怎么组织_大型Laravel应用的最佳目录结构实践
b2c电商网站制作流程,b2c水平综合的电商平台?
小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?
如何快速搭建FTP站点实现文件共享?
国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?
Laravel如何设置定时任务(Cron Job)_Laravel调度器与任务计划配置
LinuxCD持续部署教程_自动发布与回滚机制
Laravel Artisan命令怎么自定义_创建自己的Laravel命令行工具完全指南
HTML5打空格有哪些误区_新手常犯的空格使用错误【技巧】
JavaScript数据类型有哪些_如何准确判断一个变量的类型
如何在阿里云ECS服务器部署织梦CMS网站?
Laravel如何使用.env文件管理环境变量?(最佳实践)
长沙企业网站制作哪家好,长沙水业集团官方网站?
Laravel Session怎么存储_Laravel Session驱动配置详解
焦点电影公司作品,电影焦点结局是什么?
详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)
七夕网站制作视频,七夕大促活动怎么报名?
jquery插件bootstrapValidator表单验证详解
非常酷的网站设计制作软件,酷培ai教育官方网站?
Android使用GridView实现日历的简单功能
javascript中的try catch异常捕获机制用法分析
阿里云网站搭建费用解析:服务器价格与建站成本优化指南
Laravel项目如何进行性能优化_Laravel应用性能分析与优化技巧大全
Python图片处理进阶教程_Pillow滤镜与图像增强
javascript中的数组方法有哪些_如何利用数组方法简化数据处理
车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?
如何使用 Go 正则表达式精准提取括号内首个纯字母标识符(忽略数字与嵌套)
韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐
三星网站视频制作教程下载,三星w23网页如何全屏?
如何为不同团队 ID 动态生成多个“认领值班”按钮
Laravel怎么进行数据库回滚_Laravel Migration数据库版本控制与回滚操作
如何在Windows环境下新建FTP站点并设置权限?
lovemo网页版地址 lovemo官网手机登录
Laravel如何为API编写文档_Laravel API文档生成与维护方法
北京网站制作的公司有哪些,北京白云观官方网站?
Laravel如何配置Horizon来管理队列?(安装和使用)
Laravel怎么解决跨域问题_Laravel配置CORS跨域访问
Claude怎样写结构化提示词_Claude结构化提示词写法【教程】
如何在IIS7中新建站点?详细步骤解析
Java类加载基本过程详细介绍
Laravel怎么实现验证码功能_Laravel集成验证码库防止机器人注册
大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?
Laravel如何使用Scope本地作用域_Laravel模型常用查询逻辑封装技巧【手册】
微信h5制作网站有哪些,免费微信H5页面制作工具?
佛山企业网站制作公司有哪些,沟通100网上服务官网?
今日头条微视频如何找选题 今日头条微视频找选题技巧【指南】
Laravel怎么自定义错误页面_Laravel修改404和500页面模板

