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实现的简单文件传输服务器和客户端
Apr 08 Python
python脚本内运行linux命令的方法
Jul 02 Python
改进Django中的表单的简单方法
Jul 17 Python
Python列表推导式、字典推导式与集合推导式用法实例分析
Feb 07 Python
简单实现python数独游戏
Mar 30 Python
python 将有序数组转换为二叉树的方法
Mar 26 Python
Python 中的参数传递、返回值、浅拷贝、深拷贝
Jun 25 Python
Python3常用内置方法代码实例
Nov 18 Python
keras 特征图可视化实例(中间层)
Jan 24 Python
Python异常处理机制结构实例解析
Jul 23 Python
Python调用飞书发送消息的示例
Nov 10 Python
pandas时间序列之pd.to_datetime()的实现
Jun 16 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实现简单汉字验证码
2015/07/28 PHP
浅析PHP中的 inet_pton 网络函数
2019/12/16 PHP
零基础学JavaScript最新动画教程+iso光盘下载
2008/01/22 Javascript
Js 时间函数getYear()的使用问题探讨
2013/04/01 Javascript
js简单实现竖向tab选项卡的方法
2015/05/04 Javascript
js代码验证手机号码和电话号码是否合法
2015/07/30 Javascript
jQuery实现分章节锚点“回到顶部”动画特效代码
2015/10/23 Javascript
javacript获取当前屏幕大小
2016/06/04 Javascript
js实现音频控制进度条功能
2017/04/01 Javascript
微信JS-SDK选取手机照片上传功能
2017/04/21 Javascript
AngularJS入门教程一:路由用法初探
2017/05/27 Javascript
在Swiper内如何制作CSS3动画效果示例代码
2017/12/07 Javascript
node的process以及child_process模块学习笔记
2018/03/06 Javascript
vue项目部署上线遇到的问题及解决方法
2018/06/10 Javascript
jQuery.extend 与 jQuery.fn.extend的用法及区别实例分析
2018/07/25 jQuery
关于node-bindings无法在Electron中使用的解决办法
2018/12/18 Javascript
vue2.0自定义指令示例代码详解
2019/04/25 Javascript
Angular2使用SVG自定义图表(条形图、折线图)组件示例
2019/05/10 Javascript
js实现踩五彩块游戏
2020/02/08 Javascript
通过shell+python实现企业微信预警
2019/03/07 Python
Python Opencv任意形状目标检测并绘制框图
2019/07/23 Python
Python时间序列缺失值的处理方法(日期缺失填充)
2019/08/11 Python
python正则表达式实例代码
2020/03/03 Python
基于打开pycharm有带图片md文件卡死问题的解决
2020/04/24 Python
Matplotlib animation模块实现动态图
2021/02/25 Python
探究 canvas 绘图中撤销(undo)功能的实现方式详解
2018/05/17 HTML / CSS
HTML5 Canvas旋转动画的2个代码例子(一个旋转的太极图效果)
2014/04/10 HTML / CSS
苏格兰在线威士忌商店:The Whisky Barrel
2019/05/07 全球购物
xml有哪些解析技术?区别是什么
2016/04/26 面试题
SQL Server里面什么样的视图才能创建索引
2015/04/17 面试题
军校本科大学生自我评价
2014/01/14 职场文书
新学期开学演讲稿
2014/05/24 职场文书
一次性工伤赔偿协议书范本
2014/11/25 职场文书
计算机专业自荐信范文
2015/03/26 职场文书
接触艺术对孩子学习思维有益
2019/08/06 职场文书
SQL bool盲注和时间盲注详解
2022/07/23 SQL Server