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 socket网络编程步骤详解(socket套接字使用)
Dec 06 Python
python+Django+apache的配置方法详解
Jun 01 Python
利用Anaconda完美解决Python 2与python 3的共存问题
May 25 Python
Python日期的加减等操作的示例
Aug 15 Python
python实现画圆功能
Jan 25 Python
Python图像处理模块ndimage用法实例分析
Sep 05 Python
Python列表list操作相关知识小结
Jan 29 Python
python Canny边缘检测算法的实现
Apr 24 Python
pycharm第三方库安装失败的问题及解决经验分享
May 09 Python
Keras Convolution1D与Convolution2D区别说明
May 22 Python
python3 简单实现组合设计模式
Jul 02 Python
详解Python 中的 defaultdict 数据类型
Feb 22 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中计算程序运行时间的类代码
2012/11/03 PHP
PHP5中实现多态的两种方法实例分享
2014/04/21 PHP
php根据日期或时间戳获取星座信息和生肖等信息
2015/10/20 PHP
firefox 和 ie 事件处理的细节,研究,再研究 书写同时兼容ie和ff的事件处理代码
2007/04/12 Javascript
js复制网页内容并兼容各主流浏览器的代码
2013/12/17 Javascript
js和jquery使按钮失效为不可用状态的方法
2014/01/26 Javascript
js replace替换所有匹配的字符串
2014/02/13 Javascript
理解javascript函数式编程中的闭包(closure)
2016/03/08 Javascript
jQuery Mobile 触摸事件实例
2016/06/04 Javascript
AngularJS入门教程之表单校验用法示例
2016/11/02 Javascript
浅谈键盘上回车按钮的js触发事件
2017/02/13 Javascript
Angualrjs和bootstrap相结合实现数据表格table
2017/03/30 Javascript
js实现随机点名小功能
2017/08/17 Javascript
vue-awesome-swiper滑块插件使用方法详解
2017/11/27 Javascript
基于vue3.0.1beta搭建仿京东的电商H5项目
2020/05/06 Javascript
[46:04]Liquid vs VP Supermajor决赛 BO 第四场 6.10
2018/07/05 DOTA
Python操作RabbitMQ服务器实现消息队列的路由功能
2016/06/29 Python
Python实现的下载网页源码功能示例
2017/06/13 Python
详解python中的文件与目录操作
2017/07/11 Python
Python列表(List)知识点总结
2019/02/18 Python
Python Opencv实现图像轮廓识别功能
2020/03/23 Python
windows下python 3.9 Numpy scipy和matlabplot的安装教程详解
2020/11/28 Python
幼儿园中秋节活动反思
2014/02/16 职场文书
文秘档案管理岗位职责
2014/03/06 职场文书
绿色环保标语
2014/06/12 职场文书
《中国梦我的梦》中学生演讲稿
2014/08/20 职场文书
关于教师节的演讲稿
2014/09/04 职场文书
大学生撤销处分思想汇报
2014/09/12 职场文书
体育专业大学生职业生涯规划范文:打造自己的运动帝国
2014/09/12 职场文书
领导干部作风整顿个人剖析材料
2014/10/11 职场文书
家庭困难证明
2014/10/12 职场文书
导游词之秦皇岛燕塞湖
2020/01/03 职场文书
带你彻底理解JavaScript中的原型对象
2021/04/14 Javascript
德劲DE1108畅想
2021/04/22 无线电
pytorch中Schedule与warmup_steps的用法说明
2021/05/24 Python
React 并发功能体验(前端的并发模式)
2021/07/01 Javascript