Django项目使用ckeditor详解(不使用admin)


Posted in Python onDecember 17, 2019

效果图:

Django项目使用ckeditor详解(不使用admin)

1.安装django-ckeditor

pip install django-ckeditor

如果需要上传图片或者文件,还需要安装pillow

pip install pillow

2.配置模型字段

如果编辑器需要上传图片或者文件,需要引入RichTextUploadingField,否则只需要引入RichTextField

from ckeditor_uploader.fields import RichTextUploadingField

class Activity(models.Model):
  desc = RichTextUploadingField(verbose_name="活动描述")

3.settings中配置

CKEDITOR_CONFIGS = {
  'default': {
    'toolbar': 'full', #工具栏全部功能
    'height': 300, # 高度
    'width': 730, # 宽度
  },
}
CKEDITOR_UPLOAD_PATH = 'ckeditor/' #上传文件的目录
CKEDITOR_IMAGE_BACKEND = 'pillow'  #pillow做为backend

4.form表单配置

这里只需要使用modelForm,不需要配置

from django import forms

from learntime.activity.models import Activity

class ActivityForm(forms.ModelForm):
  class Meta:
    fields = "__all__" #引入全部字段
    model = Activity

5.urls配置

以下是admin中配置的urls,如果在自己的项目中就不能这样写

urlpatterns = [
  ...
  path('ckeditor/', include('ckeditor_uploader.ckeditor_urls')),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

网上其他教程都是在admin中配置ckeditor,如果按照如上代码可能会发现图片上传失败,点进源码可以看到,图片上传的成功条件为:django的用户表is_staff为True,自己的项目中可能并没有这样设定。

urls源码如下:

from __future__ import absolute_import

from django.conf.urls import url
from django.contrib.admin.views.decorators import staff_member_required
from django.views.decorators.cache import never_cache

from . import views

urlpatterns = [
  url(r'^upload/', staff_member_required(views.upload), name='ckeditor_upload'),
  url(r'^browse/', never_cache(staff_member_required(views.browse)), name='ckeditor_browse'),
]

staff_member_required为装饰器,我们可以把它替换为login_required,即必须登录之后才能上传图片。

修改后的代码如下:

xxx.utils.ckeditor_urls.py

from __future__ import absolute_import

from django.conf.urls import url
from django.contrib.auth.decorators import login_required
from django.views.decorators.cache import never_cache

from ckeditor_uploader import views

urlpatterns = [
  url(r'^upload/', login_required(views.upload), name='ckeditor_upload'),
  url(r'^browse/', never_cache(login_required(views.browse)), name='ckeditor_browse'),
]

urls.py

path('ckeditor/', include('xxx.utils.ckeditor_urls')),

按照如上配置就能完美上传图片和文件了。

Django项目使用ckeditor详解(不使用admin)

以上这篇Django项目使用ckeditor详解(不使用admin)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python解析文件示例
Jan 23 Python
python中将字典转换成其json字符串
Jul 16 Python
python基础入门学习笔记(Python环境搭建)
Jan 13 Python
Python获取二维矩阵每列最大值的方法
Apr 03 Python
解决python升级引起的pip执行错误的问题
Jun 12 Python
Python设计模式之适配器模式原理与用法详解
Jan 15 Python
使用Django搭建web服务器的例子(最最正确的方式)
Aug 29 Python
Python使用gluon/mxnet模块实现的mnist手写数字识别功能完整示例
Dec 18 Python
PIL包中Image模块的convert()函数的具体使用
Feb 26 Python
Python变量及数据类型用法原理汇总
Aug 06 Python
Python extract及contains方法代码实例
Sep 11 Python
解析目标检测之IoU
Jun 26 Python
python主线程与子线程的结束顺序实例解析
Dec 17 #Python
Django通用类视图实现忘记密码重置密码功能示例
Dec 17 #Python
Django集成celery发送异步邮件实例
Dec 17 #Python
python学生信息管理系统实现代码
Dec 17 #Python
pymysql模块的操作实例
Dec 17 #Python
Django异步任务线程池实现原理
Dec 17 #Python
python 求10个数的平均数实例
Dec 16 #Python
You might like
PHP session有效期session.gc_maxlifetime
2011/04/20 PHP
php中神奇的fastcgi_finish_request
2011/05/02 PHP
php+mysql实现用户注册登陆的方法
2015/01/03 PHP
PHP获取音频文件的相关信息
2015/06/22 PHP
Laravel 5.5基于内置的Auth模块实现前后台登陆详解
2017/12/21 PHP
jqPlot jquery的页面图表绘制工具
2009/07/25 Javascript
jQuery 学习第六课 实现一个Ajax的TreeView
2010/05/17 Javascript
禁用键盘上的(全局)指定键兼容iE、Chrome、火狐
2013/05/14 Javascript
js无法获取到html标签的属性的解决方法
2016/07/26 Javascript
用jmSlip编写移动端顶部日历选择控件
2016/10/24 Javascript
Bootstrap基本插件学习笔记之Alert警告框(20)
2016/12/08 Javascript
js实现拖拽功能
2017/03/01 Javascript
微信小程序 弹框和模态框实现代码
2017/03/10 Javascript
vue实现搜索过滤效果
2019/05/28 Javascript
解决vue-cli项目开发运行时内存暴涨卡死电脑问题
2019/10/29 Javascript
vue实现商城秒杀倒计时功能
2019/12/12 Javascript
一篇文章带你浅入webpack的DLL优化打包
2020/02/20 Javascript
swiperjs实现导航与tab页的联动
2020/12/13 Javascript
python操作gmail实例
2015/01/14 Python
Python中zfill()方法的使用教程
2015/05/20 Python
Python中subprocess的简单使用示例
2015/07/28 Python
详解 Python 与文件对象共事的实例
2017/09/11 Python
python GUI实例学习
2017/11/21 Python
python3使用smtplib实现发送邮件功能
2018/05/22 Python
说说如何遍历Python列表的方法示例
2019/02/11 Python
python自定义函数实现最大值的输出方法
2019/07/09 Python
python正则-re的用法详解
2019/07/28 Python
pygame实现俄罗斯方块游戏(对战篇1)
2019/10/29 Python
简单了解Django项目应用创建过程
2020/07/06 Python
新书发布会策划方案
2014/06/09 职场文书
缓刑人员思想汇报
2014/10/11 职场文书
冰峪沟导游词
2015/02/09 职场文书
关于环保的宣传稿
2015/07/23 职场文书
Go语言使用select{}阻塞main函数介绍
2021/04/25 Golang
Python自动化测试PO模型封装过程详解
2021/06/22 Python
解决Laravel使用验证时跳转到首页的问题
2021/11/17 PHP