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中的fabs()方法的使用
May 14 Python
Python中使用多进程来实现并行处理的方法小结
Aug 09 Python
python 匹配url中是否存在IP地址的方法
Jun 04 Python
Python实现京东秒杀功能代码
May 16 Python
Python完全识别验证码自动登录实例详解
Nov 24 Python
pytorch标签转onehot形式实例
Jan 02 Python
Python threading.local代码实例及原理解析
Mar 16 Python
Jupyter notebook命令和编辑模式常用快捷键汇总
Nov 17 Python
解决pycharm不能自动保存在远程linux中的问题
Feb 06 Python
详解Python 3.10 中的新功能和变化
Apr 28 Python
python中Pyqt5使用Qlabel标签播放视频
Apr 22 Python
在 Python 中利用 Pool 进行多线程
Apr 24 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 字符串正则替换函数preg_replace使用说明
2011/07/15 PHP
php代码书写习惯优化小结
2013/06/20 PHP
PHP仿博客园 个人博客(1) 数据库与界面设计
2013/07/05 PHP
php通过function_exists检测函数是否存在的方法
2015/03/18 PHP
php指定长度分割字符串str_split函数用法示例
2017/01/30 PHP
PHP实现简单计算器小程序
2020/08/28 PHP
Javascript 陷阱 window全局对象
2008/11/26 Javascript
JavaScript使用过程中需要注意的地方和一些基本语法
2010/08/26 Javascript
浅析JavaScript中的隐式类型转换
2013/12/05 Javascript
深入分析JQuery和JavaScript的异同
2014/10/23 Javascript
jQuery实现切换页面过渡动画效果
2015/10/29 Javascript
Bootstrap3制作自己的导航栏
2016/05/12 Javascript
微信小程序 Page()函数详解
2016/10/17 Javascript
AngularJS 单选框及多选框的双向动态绑定
2017/04/20 Javascript
javascript+html5+css3自定义提示窗口
2017/06/21 Javascript
javascript 中select框触发事件过程的分析
2017/08/01 Javascript
js 索引下标之li集合绑定点击事件
2018/01/12 Javascript
用node-webkit把web应用打包成桌面应用(windows环境)
2018/02/01 Javascript
vue文件树组件使用详解
2018/03/29 Javascript
js实现鼠标单击Tab表单切换效果
2018/05/16 Javascript
详解vue2.0监听属性的使用心得及搭配计算属性的使用
2018/07/18 Javascript
element UI upload组件上传附件格式限制方法
2018/09/04 Javascript
详解如何写出一个利于扩展的vue路由配置
2019/05/16 Javascript
webpack4 配置 ssr 环境遇到“document is not defined”
2019/10/24 Javascript
Node.js利用Express实现用户注册登陆功能(推荐)
2020/10/26 Javascript
python绘制地震散点图
2019/06/18 Python
Python自动登录QQ的实现示例
2020/08/28 Python
Sofft鞋官网:世界知名鞋类品牌
2017/03/28 全球购物
介绍一下XMLHttpRequest对象
2012/02/12 面试题
白酒业务员岗位职责
2013/12/27 职场文书
关于运动会的广播稿
2014/09/22 职场文书
婚前财产协议书范本
2014/10/19 职场文书
2014年政风行风评议工作总结
2014/10/21 职场文书
不尊敬老师的检讨书
2014/12/21 职场文书
小学体育队列队形教学反思
2016/02/16 职场文书
浅谈MySQL之select优化方案
2021/08/07 MySQL