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设计模式编程中解释器模式的简单程序示例分享
Mar 02 Python
Python使用win32com实现的模拟浏览器功能示例
Jul 13 Python
Python使用Turtle模块绘制五星红旗代码示例
Dec 11 Python
解决python读取几千万行的大表内存问题
Jun 26 Python
Windows下python3.7安装教程
Jul 31 Python
python 发送和接收ActiveMQ消息的实例
Jan 30 Python
如何通过Python实现标签云算法
Jul 02 Python
详解PANDAS 数据合并与重塑(join/merge篇)
Jul 09 Python
python如何将两张图片生成为全景图片
Mar 05 Python
python实现时间序列自相关图(acf)、偏自相关图(pacf)教程
Jun 03 Python
django和flask哪个值得研究学习
Jul 31 Python
详解numpy.ndarray.reshape()函数的参数问题
Oct 13 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 管理系统程序中的后门
2009/08/05 PHP
php模拟post行为代码总结(POST方式不是绝对安全)
2012/02/22 PHP
深入理解PHP JSON数组与对象
2016/07/19 PHP
PHP编程 SSO详细介绍及简单实例
2017/01/13 PHP
Alliance vs Liquid BO3 第三场2.13
2021/03/10 DOTA
javascript 函数参数限制说明
2010/11/19 Javascript
利用JQuery的load函数动态加载其它页面的内容的实现代码
2010/12/14 Javascript
如何用JavaScript动态呼叫函数(两种方式)
2013/05/03 Javascript
document.getElementBy("id")与$("#id")有什么区别
2013/09/22 Javascript
jquery $(this).attr $(this).val方法使用介绍
2013/10/08 Javascript
使用原生js封装webapp滑动效果(惯性滑动、滑动回弹)
2014/05/06 Javascript
JavaScript事件委托用法分析
2015/01/24 Javascript
jquery实现标签支持图文排列带上下箭头按钮的选项卡
2015/03/14 Javascript
使用jquery.qrcode.min.js实现中文转化二维码
2016/03/11 Javascript
基于JavaScript实现的希尔排序算法分析
2017/04/14 Javascript
jQuery Datatable 多个查询条件自定义提交事件(推荐)
2017/08/24 jQuery
利用babel将es6语法转es5的简单示例
2017/12/01 Javascript
JS实现的Object数组去重功能示例【数组成员为Object对象】
2019/02/01 Javascript
Vue使用zTree插件封装树组件操作示例
2019/04/25 Javascript
Vue配置marked链接添加target="_blank"的方法
2019/07/19 Javascript
微信小程序使用前置摄像头拍照
2020/10/22 Javascript
跟老齐学Python之模块的加载
2014/10/24 Python
Python多线程编程(二):启动线程的两种方法
2015/04/05 Python
修改Python的pyxmpp2中的主循环使其提高性能
2015/04/24 Python
Saltstack快速入门简单汇总
2016/03/01 Python
python中的字典操作及字典函数
2018/01/03 Python
python取代netcat过程分析
2018/02/10 Python
django ModelForm修改显示缩略图 imagefield类型的实例
2019/07/28 Python
英国高档时尚男装购物网站:MR PORTER
2016/08/09 全球购物
中国领先的专业家电网购平台:国美在线
2016/12/25 全球购物
英国户外服装、鞋类和设备的领先零售商:Millets
2020/10/12 全球购物
师范生个人推荐信
2013/11/29 职场文书
电气工程及自动化专业自荐书范文
2013/12/18 职场文书
写给医生的感谢信
2015/01/22 职场文书
班主任培训研修日志
2015/11/13 职场文书
MySQL数据库Innodb 引擎实现mvcc锁
2022/05/06 MySQL