Django框架下使用富文本编辑器CKEditor5实例

首先,网上有很多关于CKEditor的博客教程等,但多数为CKEditor4,如果是用CKEditor5一定要去看第五版的官方文档,有很多改变。

1. 安装配置CKEditor5

此类教程有很多,这里推荐在官网下载,选择创建自己的编辑器ckeditor.com/ckeditor-5/download/.
在这里插入图片描述
选择经典,然后就可以轻松的选择插件、工具栏排版、语言,最后下载压缩包。
在这里插入图片描述
解压后放在项目目录下(sample文件夹可删可不删,但其他目录一定不要修改)
在这里插入图片描述
引用ckeditor.js,注意路径

<script type="text/javascript" src="../static/ckeditor/build/ckeditor.js"></script>
<div class="editor" ></div>

在此处,仍可修改你的编辑器

<script>
    let theEditor;
    ClassicEditor
			.create( document.querySelector( '.editor' ), {
				toolbar: {
					items: [
						'heading',
						'|',
						'bold',
						'italic',
						'link',
						'highlight',
						'|',
						'codeBlock',
					]
				},
				language: 'zh-cn',
				image: {
					toolbar: [
						'imageTextAlternative',
						'imageStyle:full',
						'imageStyle:side'
					]
				},
				table: {
					contentToolbar: [
						'tableColumn',
						'tableRow',
						'mergeTableCells'
					]
				},
				licenseKey: '',
			} )
			.then( editor => {
				theEditor = editor;
			} )
			.catch( error => {
				console.error( error );
			} );
</script>

2. 数据库储存

models.py

# content = models.TextField()
    content = RichTextField()

给编辑器添加一个保存按钮

<div>
	<a id="submit"  onclick="submit()">发布</a>
</div>
function submit() {
        var content = theEditor.getData();
        let editData = {};
        editData['solution'] = content;
        let url = "/submit/"
        $.ajax({
        url: url,
        data: JSON.stringify(editData),
        type: 'POST',
        dataType: 'json',
        beforeSend:function(xhr, settings){
            xhr.setRequestHeader("X-CSRFToken", "{{ csrf_token }}");
        },
        success: function(res) {
        },
    });
    }

添加url后,views.py:

def submit(request):
    submitInfo = request.body.decode('utf-8')
    received_json_data = json.loads(submitInfo)
    soluton = received_json_data['solution']
   
    Blog.objects.create(content=soluton)

    data = {'code': isSuccess}
    return JsonResponse(data, safe=False)

此时,就完成了数据库的保存

3. 富文本回显

数据库读取:

blog=Blog.objects.get(id=id)
content=blog.content

注意,如果不加操作单纯读入,就会导致直接显示带有html标签的文本。
在这里插入图片描述
想要达到富文本的效果,只需要将存储的富文本内容用{% autoescape off %}包括起来就可以了。

{% autoescape off %}
    {{content}}
{% endautoescape %}
### 支持插入锚点功能的富文本编辑器推荐 #### CKEditor CKEditor 是一款广泛应用于 Web 开发中的富文本编辑器,具备强大的插件生态系统和支持多种高级特性。其中就包括了对锚点的支持。通过配置特定插件,用户可以在文档内部设置链接到指定位置的书签或跳转点。 为了实现这一目标,在 Django 中集成 `django-ckeditor` 后还需要进一步操作来启用此功能: 1. 安装并配置好 django-ckeditor 库; 2. 修改项目 settings.py 文件以包含 ckeditor 的 URL 路径; 3. 使用 HTML `<a>` 标记配合 name 属性作为锚点标签;或者借助第三方扩展如 "Anchor" 插件[^1]。 ```python # 在 models.py 中定义字段时关联 CKEditorRichTextUploadingField 类型 from ckeditor_uploader.fields import RichTextUploadingField class MyModel(models.Model): content = RichTextUploadingField() ``` 对于前端部分,则需确保加载了必要的 JavaScript 和 CSS 文件,并按照官方说明调整初始化参数以便激活所需的功能模块。 #### UEditor UEditor 另外一个流行的中文社区维护较好的在线HTML编辑组件同样提供了创建内嵌式超链接至页面某一部分的能力——即所谓的“锚”。开发者可以通过自定义按钮组的方式向工具栏添加相应选项,从而允许作者方便快捷地完成此类任务[^2]。 具体做法如下所示: - 编辑 ueditor.config.js 配置文件加入 anchor 按钮; - 利用 editor.execCommand('anchor') 方法调用 API 接口执行命令。 ```javascript // 初始化实例化对象时传入 customConfig 参数指向本地路径下的个性化设定脚本 var ue = UE.getEditor('container', { toolbars: [['source','undo','redo','bold','italic','underline', 'forecolor','backcolor','link','unlink','simpleupload', 'emotion','spechars','insertcode','help','anchor']] // 添加 anchor 至列表中 }); ``` 以上两种方案均能较好地满足关于在所编写的文档里插入固定参照点的需求,可根据实际应用场景和个人偏好做出选择。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值