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中__init__和__new__的区别详解
Jul 09 Python
python的Template使用指南
Sep 11 Python
在Django的URLconf中使用多个视图前缀的方法
Jul 18 Python
Python使用PyCrypto实现AES加密功能示例
May 22 Python
python Pandas 读取txt表格的实例
Apr 29 Python
Python OOP类中的几种函数或方法总结
Feb 22 Python
关于python导入模块import与常见的模块详解
Aug 28 Python
Python爬取365好书中小说代码实例
Feb 28 Python
jupyter notebook 增加kernel教程
Apr 10 Python
Python批量安装卸载1000个apk的方法
Apr 10 Python
python golang中grpc 使用示例代码详解
Jun 03 Python
Django web自定义通用权限控制实现方法
Nov 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
实用函数10
2007/11/08 PHP
PHP实现数组转JSon和JSon转数组的方法示例
2018/06/14 PHP
CentOS7.0下安装PHP5.6.30服务的教程详解
2018/09/29 PHP
php实现推荐功能的简单实例
2019/09/29 PHP
laravel批量生成假数据的方法
2019/10/09 PHP
php-7.3.6 编译安装过程
2020/02/11 PHP
服务端 VBScript 与 JScript 几个相同特性的写法 By shawl.qiu
2007/03/06 Javascript
javascript 面向对象全新理练之原型继承
2009/12/03 Javascript
Moment.js 不容错过的超棒Javascript日期处理类库
2012/04/15 Javascript
js猜数字小游戏的简单实现代码
2013/07/02 Javascript
JS基于面向对象实现的放烟花效果
2015/05/07 Javascript
JavaScript类型系统之布尔Boolean类型详解
2016/06/26 Javascript
jquery实现全选、不选、反选的两种方法
2016/09/06 Javascript
JavaScript使用正则表达式获取全部分组内容的方法示例
2017/01/17 Javascript
移动端效果之Swiper详解
2017/10/09 Javascript
OkHttp踩坑随笔为何 response.body().string() 只能调用一次
2018/01/08 Javascript
react实现antd线上主题动态切换功能
2019/08/12 Javascript
在vue-cli中引入lodash.js并使用详解
2019/11/13 Javascript
Vue实现附件上传功能
2020/05/28 Javascript
详解使用python的logging模块在stdout输出的两种方法
2017/05/17 Python
Python 网页解析HTMLParse的实例详解
2017/08/10 Python
python+ffmpeg视频并发直播压力测试
2018/03/06 Python
解决python中用matplotlib画多幅图时出现图形部分重叠的问题
2019/07/07 Python
Python学习笔记之列表和成员运算符及列表相关方法详解
2019/08/22 Python
Django实现文件上传下载功能
2019/10/06 Python
Python更新所有已安装包的操作
2020/02/13 Python
在python3中实现查找数组中最接近与某值的元素操作
2020/02/29 Python
python爬虫开发之Beautiful Soup模块从安装到详细使用方法与实例
2020/03/09 Python
python 图像判断,清晰度(明暗),彩色与黑白实例
2020/06/04 Python
Python+Xlwings 删除Excel的行和列
2020/12/19 Python
HTML5时代CSS设置漂亮字体取代图片
2014/09/04 HTML / CSS
韩国11街:11STREET
2018/03/27 全球购物
门卫工作岗位职责
2013/12/17 职场文书
质监局领导班子对照检查材料思想汇报
2014/09/27 职场文书
Python提取PDF指定内容并生成新文件
2021/06/09 Python
【海涛dota解说】海涛小满开黑4v5被破两路翻盘潮汐第一视角解说
2022/04/01 DOTA