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