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页面模板