Loading

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) 重新执行数据迁移

posted @ 2022-08-07 14:15  minqiliang  阅读(156)  评论(0编辑  收藏  举报
-->