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正则表达式去掉数字中的逗号(python正则匹配逗号)
Dec 25 Python
Python实现的生成自我描述脚本分享(很有意思的程序)
Jul 18 Python
C#返回当前系统所有可用驱动器符号的方法
Apr 18 Python
Python中类的初始化特殊方法
Dec 01 Python
Python编程求解二叉树中和为某一值的路径代码示例
Jan 04 Python
Python实现读取字符串按列分配后按行输出示例
Apr 17 Python
Python实现正则表达式匹配任意的邮箱方法
Dec 20 Python
Python中三元表达式的几种写法介绍
Mar 04 Python
python的pytest框架之命令行参数详解(下)
Jun 27 Python
django 实现将本地图片存入数据库,并能显示在web上的示例
Aug 07 Python
Python+Opencv实现把图片、视频互转的示例
Dec 17 Python
利用python绘制正态分布曲线
Jan 04 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
APMServ使用说明
2006/10/23 PHP
php5.3以后的版本连接sqlserver2000的方法
2014/07/28 PHP
Yii使用find findAll查找出指定字段的实现方法
2014/09/05 PHP
thinkphp3.x连接mysql数据库的方法(具体操作步骤)
2016/05/19 PHP
javascript取消文本选定的实现代码
2010/11/14 Javascript
js中的this关键字详解
2013/09/25 Javascript
jQuery源码解读之addClass()方法分析
2015/02/20 Javascript
浅谈被jQuery抛弃的函数及替代函数
2015/05/03 Javascript
js实现文本框只允许输入数字并限制数字大小的方法
2015/08/19 Javascript
Vue2路由动画效果的实现代码
2017/07/10 Javascript
基于vue.js实现的分页
2018/03/13 Javascript
聊聊JS动画库 Velocity.js的使用
2018/03/13 Javascript
关于echarts在节点显示动态数据及添加提示文本所遇到的问题
2018/04/20 Javascript
详解关于webpack多入口热加载很慢的原因
2019/04/24 Javascript
JavaScript随机数的组合问题案例分析
2020/05/16 Javascript
[02:51]DOTA2 2015国际邀请赛中国区预选赛第一日战报
2015/05/27 DOTA
python多线程编程方式分析示例详解
2013/12/06 Python
在Python操作时间和日期之asctime()方法的使用
2015/05/22 Python
Python将图片批量从png格式转换至WebP格式
2020/08/22 Python
Python变量和字符串详解
2017/04/29 Python
python实现人脸识别经典算法(一) 特征脸法
2018/03/13 Python
python中返回矩阵的行列方法
2018/04/04 Python
Python简单实现的代理服务器端口映射功能示例
2018/04/08 Python
pandas apply 函数 实现多进程的示例讲解
2018/04/20 Python
在Python中增加和插入元素的示例
2018/11/01 Python
Django框架模板文件使用及模板文件加载顺序分析
2019/05/23 Python
Pandas之Dropna滤除缺失数据的实现方法
2019/06/25 Python
使用matplotlib动态刷新指定曲线实例
2020/04/23 Python
HTML5 transform三维立方体实现360无死角三维旋转效果
2014/08/22 HTML / CSS
ONLY德国官方在线商店:购买时尚女装
2017/09/21 全球购物
软件生产职位结构化面试主要考察要素及面试题库
2015/06/12 面试题
如何通过 CSS 写出火焰效果
2021/03/24 HTML / CSS
大学班级学风建设方案
2014/05/01 职场文书
幼儿老师求职信
2014/06/30 职场文书
新郎结婚保证书
2015/02/26 职场文书
结婚通知短信大全
2015/04/17 职场文书