django-ckeditor

前言

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 }}。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值