django-ckeditor

    科技2022-09-01  118

    前言

    django是一个容易快速上手的web框架,用它来创建内容驱动型的网站(比如独立博客)十分方便。遗憾的是,django并没有提供官方的富文本编辑器,而后者恰好是内容型网站后台管理中不可或缺的控件。ckeditor是一款基于javascript,使用非常广泛的开源网页编辑器。它可以和多种编程语言相结合,python当然也不例外。本文就来介绍一下如何在基于django博客系统如何完美地用上ckeditor。

    使用方法

    pip3 install django-ckeditor

    settings注册应用

    INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'ckeditor', ]

    model.py

    from ckeditor.fields import RichTextField class Comment(models.Model): author = models.CharField(max_length=50, verbose_name='评论者') # 之前为 content = models.TextField() content = RichTextField() def __str__(self): return self.author

    记得每次修改模型后要迁移数据

    python3 manage.py makemigrations python3 manage.py migrate

    然后就可以用了,如果需要插入图片,则需要安装一个 pillow包

    pip3 install pillow

    注册应用

    INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'ckeditor', 'ckeditor_uploader', ]

    配置 media 和 ckeditor

    # media MEDIA_URL = '/media/' MEDIA_ROOT = os.path.join(BASE_DIR, 'media') # 配置ckeditor CKEDITOR_UPLOAD_PATH = 'upload/'

    配置URL

    from django.conf import settings from django.conf.urls.static import static from django.urls import path, include urlpatterns = [ # ckeditor路由 path('ckeditor', include('ckeditor_uploader.urls')), path('admin/', admin.site.urls), path('hh', Index.as_view()), ] urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

    改写model类 字段

    from ckeditor_uploader.fields import RichTextUploadingField class Comment(models.Model): author = models.CharField(max_length=50, verbose_name='评论者') content = RichTextUploadingField(null=True) def __str__(self): return self.author

    完成!

    如何在前端显示ck输入的内容 前端要显示ck输入的内容时,在需要使用的页面头部引入:

    <script src="{% static 'ckeditor/ckeditor/ckeditor.js' %}"></script>

    光这样你会发现,显示出来的时候是原始的包含各种html标签等符号的内容,此时在变量中增加safe过滤即可,如:{{ content | safe }}。

    Processed: 0.008, SQL: 9