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 相关文章推荐
详解Django框架中用户的登录和退出的实现
Jul 23 Python
简单掌握Python的Collections模块中counter结构的用法
Jul 07 Python
python使用多线程编写tcp客户端程序
Sep 02 Python
详解python 破解网站反爬虫的两种简单方法
Feb 09 Python
python关于变量名的基础知识点
Mar 03 Python
Python之关于类变量的两种赋值区别详解
Mar 12 Python
Python面向对象程序设计之类和对象、实例变量、类变量用法分析
Mar 23 Python
用sleep间隔进行python反爬虫的实例讲解
Nov 30 Python
pycharm配置安装autopep8自动规范代码的实现
Mar 02 Python
Pytorch数据读取之Dataset和DataLoader知识总结
May 23 Python
Python jiaba库的使用详解
Nov 23 Python
python和anaconda的区别
May 06 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
兼容firefox,chrome的网页灰度效果
2011/08/08 PHP
PHP解析目录路径的3个函数总结
2014/11/18 PHP
朋友网关于QQ相关的PHP代码(研究QQ的绝佳资料)
2015/01/26 PHP
浅谈php使用curl模拟多线程发送请求
2019/03/08 PHP
Iframe thickbox2.0使用的方法
2009/03/05 Javascript
动态样式类封装JS代码
2009/09/02 Javascript
js返回上一页并刷新代码整理
2012/12/21 Javascript
让javascript加载速度倍增的方法(解决JS加载速度慢的问题)
2014/12/12 Javascript
javascript与jquery中的this关键字用法实例分析
2015/12/24 Javascript
jquery实现简单的遮罩层
2016/01/08 Javascript
详解Jquery 遍历数组之$().each方法与$.each()方法介绍
2017/01/09 Javascript
windows系统下更新nodejs版本的方案
2017/11/24 NodeJs
浅谈vue的props,data,computed变化对组件更新的影响
2018/01/16 Javascript
纯js封装的ajax功能函数与用法示例
2018/05/14 Javascript
javascript使用正则实现去掉字符串前面的所有0
2018/07/23 Javascript
简谈创建React Component的几种方式
2019/06/15 Javascript
微信小程序跨页面数据传递事件响应实现过程解析
2019/12/19 Javascript
node.js使用 http-proxy 创建代理服务器操作示例
2020/02/10 Javascript
vue-openlayers实现地图坐标弹框效果
2020/09/24 Javascript
详解Python中的Descriptor描述符类
2016/06/14 Python
Python进阶_关于命名空间与作用域(详解)
2017/05/29 Python
Python cookbook(数据结构与算法)找出序列中出现次数最多的元素算法示例
2018/03/15 Python
Python实现字典(dict)的迭代操作示例
2018/06/05 Python
Python实现读取机器硬件信息的方法示例
2018/06/09 Python
python数据化运营的重要意义
2019/11/25 Python
美国销售第一的智能手机和平板电脑保护壳:OtterBox
2017/12/21 全球购物
CHARLES & KEITH台湾官网:新加坡时尚品牌
2019/07/30 全球购物
关于安全的演讲稿
2014/05/09 职场文书
2014年入党积极分子学习三中全会思想汇报
2014/09/13 职场文书
教师自我剖析材料
2014/09/29 职场文书
后进生评语大全
2015/01/04 职场文书
培训师岗位职责
2015/02/14 职场文书
2015年董事长秘书工作总结
2015/07/23 职场文书
Python控制台输出俄罗斯方块移动和旋转功能
2021/04/18 Python
5种方法告诉你如何使JavaScript 代码库更干净
2021/09/15 Javascript
Vue监视数据的原理详解
2022/02/24 Vue.js