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正则表达式匹配HTML页面编码
Apr 08 Python
python:socket传输大文件示例
Jan 18 Python
Python实现的根据IP地址计算子网掩码位数功能示例
May 23 Python
python循环定时中断执行某一段程序的实例
Jun 29 Python
python接口自动化如何封装获取常量的类
Dec 24 Python
python实现对变位词的判断方法
Apr 05 Python
使用jupyter notebook将文件保存为Markdown,HTML等文件格式
Apr 14 Python
DataFrame.groupby()所见的各种用法详解
Jun 14 Python
关于python3.7安装matplotlib始终无法成功的问题的解决
Jul 28 Python
Python sqlalchemy时间戳及密码管理实现代码详解
Aug 01 Python
在vscode中启动conda虚拟环境的思路详解
Dec 25 Python
Python入门之使用pandas分析excel数据
May 12 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将向Java靠拢
2006/10/09 PHP
编写PHP的安全策略
2006/10/09 PHP
Yii 快速,安全,专业的PHP框架
2014/09/03 PHP
PHP使用array_multisort对多个数组或多维数组进行排序
2014/12/16 PHP
php实现数据库的增删改查
2017/02/26 PHP
深入理解Yii2.0乐观锁与悲观锁的原理与使用
2017/07/26 PHP
php简单中奖算法(实例)
2017/08/15 PHP
WordPress免插件实现面包屑导航的示例代码
2020/08/20 PHP
用javascript自动显示最后更新时间
2007/03/15 Javascript
JSQL  一个 web DB 的封装
2010/05/05 Javascript
利用webqq协议使用python登录qq发消息源码参考
2013/04/08 Javascript
jquery中append()与appendto()用法分析
2014/11/14 Javascript
jQueryMobile之Helloworld与页面切换的方法
2015/02/04 Javascript
jQuery原理系列-css选择器的简单实现
2016/06/07 Javascript
AngularJS入门教程之MVC架构实例分析
2016/11/01 Javascript
JS访问DOM节点方法详解
2016/11/29 Javascript
IE8兼容Jquery.validate.js的问题
2016/12/01 Javascript
layer弹出层中H5播放器全屏出错的解决方法
2017/02/21 Javascript
基于百度地图api清除指定覆盖物(Overlay)的方法
2018/01/26 Javascript
解决vue打包项目后刷新404的问题
2018/03/06 Javascript
vue树形结构获取键值的方法示例
2018/06/21 Javascript
Vue中的验证登录状态的实现方法
2019/03/09 Javascript
JS异步错误捕获的一些事小结
2019/04/26 Javascript
js 将多个对象合并成一个对象 assign方法的实现
2020/09/24 Javascript
Python2.x中str与unicode相关问题的解决方法
2015/03/30 Python
浅谈python多线程和队列管理shell程序
2015/08/04 Python
python 3.7.0 下pillow安装方法
2018/08/27 Python
Python全局变量与局部变量区别及用法分析
2018/09/03 Python
深入学习python多线程与GIL
2019/08/26 Python
CSS3实现可翻转的hover效果
2018/05/23 HTML / CSS
HTML5本地存储之Web Storage详解
2016/07/04 HTML / CSS
FC-Moto美国:欧洲最大的摩托车服装和头盔商店之一
2019/08/24 全球购物
网络工程师面试(三木通信技术有限公司)
2013/06/05 面试题
《母鸡》教学反思
2014/02/25 职场文书
历史专业大学生职业生涯规划书
2014/03/13 职场文书
安全教育日主题班会
2015/08/13 职场文书