Django 中使用 ckEditor 生成文章编辑器
Django 中使用 ckEditor 生成文章编辑器
(1) 安装第三方功能应用 Django CKEditor,并且设置改应用的功能
pip install django-ckeditor
(2) settings.py中注册Django CKEditor功能应用
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
# 添加 Django CKEditor
'ckeditor',
'ckeditor_uploader',
]
#编辑器的配置信息
CKEDITOR_UPLOAD_PATH = "article_images" # 设置编辑器上传的图片的存储位置,在该文件夹在media文件夹下
CKEDITOR_CONFIGS = {
'default': {
'toolbar': 'Full'
}
} # 设置工具栏工具,full代表全部功能
CKEDITOR_ALLOW_NONIMAGE_FILES = False # 支持上传任何文件,不只是图片
CKEDITOR_BROWSE_SHOW_DIRS = True # 上传的文件显示在浏览器上
(3) 在主应用的urls.py文件中定义 Django CKEditor的路由信息
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
# 设置编辑器的路由信息
path('ckeditor/', include('ckeditor_uploader.urls')),
]
(4) 在模型中重新定义文章内容字段,将字段改为 Django CKEditor 定义的字段类型,例如:
class ArticleInfo(models.Model):
author = models.ForeignKey(MyUser, on_delete=models.CASCADE, verbose_name='用户')
title = models.CharField('标题', max_length=200)
# 重新定义文章内容字段,使用RichTextUploadingField
content = RichTextUploadingField(verbose_name='内容')
articlephoto = models.ImageField('文章图片', blank=True, upload_to='images/article/')
reading = models.IntegerField('阅读量', default=0)
liking = models.IntegerField('点赞量', default=0)
created = models.DateTimeField('创建时间', default=timezone.now)
updated = models.DateTimeField('更新时间', auto_now=True)
article_tag = models.ManyToManyField(ArticleTag, blank=True, verbose_name='文章标签')
def __str__(self):
return self.title
class Meta:
verbose_name = '博文管理'
verbose_name_plural = '博文管理'
(5) 重新执行数据迁移