Django项目使用ckeditor详解(不使用admin)
作者:Pykk2019 发布时间:2022-12-15 01:52:52
标签: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')),
按照如上配置就能完美上传图片和文件了。
来源:https://www.cnblogs.com/PyKK2019/p/11804594.html


猜你喜欢
- 进制转换进制之间的转换主要是利用十进制完成的。在进制转换的过程中,可以首先将相关进制转换为十进制的,再进行二次转换达到想要的效果。当然在进制
- 图像标注在计算机视觉中很重要,计算机视觉是一种技术,它允许计算机从数字图像或视频中获得高水平的理解力,并以人类的方式观察和解释视觉信息。注释
- 下面继续为大家带来XHTML与HTML兼容的16条指引!1.避免将页面声明为XML类型,页面使用UTF-8或者UTF-16字符集。2.在空元
- 一般现今ASP木马常通过以下四点来操作服务器,所以我们只要将一下四处设置好就能从一 前使用IIS服务器的站长很多,特别是对于ASP网站来说,
- 同样是做表格,但是有些人的表格就做的很好看。融合了之前所学不同模块的知识,来讲讲Django中生成表格的特殊方法。这里只是mark一下导出的
- 前言左思右想没有头绪时,刚好看到一篇介绍Pygame制作飞机大战的文章。文章写的不错,文中代码拿来就能跑。有了!要不直接把飞机大战改成接兔子
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN&
- 301和302 Http状态有啥区别?301,302 都是HTTP状态的编码,都代表着某个URL发生了转移,不同之处在于:301 redir
- 一. 图片懒加载的目的大型网站如常用的淘宝,京东等页面,需要展示大量的商品图片信息,如果打开网页时让所有图片一次性加载完成,需要处理很多次网
- 一、创建一个项目如果这是你第一次使用Django,那么你必须进行一些初始设置。也就是通过自动生成代码来建立一个Django项目--一个Dja
- vue-cli使用stimulsoft.reports.js(保姆级教程)第一部分:数据源准备以下是JSON数据的教程json数据结构{&q
- UCD介绍UCD是Unicode字符数据库(Unicode Character DataBase)的缩写。UCD由一些描述Unicode字符
- 用uniapp开发APP时,为了开发方便,经常是H5开发好,然后再弄APP的兼容性问题。所以可能会涉及到跨域,此时也可以让后端同学帮忙,但是
- https://docs.python.org/3/library/function.html #python官方网址# 取绝对值print
- 目录1. 输入、输出与注释1.1 获取用户输入1.2 格式化输出1.2.1 基本方法1.2.2 format 格式化函数1.3 注释2. 高
- 本文实例讲述了python生成器/yield协程/gevent写简单的图片下载器功能。分享给大家供大家参考,具体如下:1、生成器:'
- 在以前的日志中讲了怎么制作验证码,这篇就讲讲怎么给验证码加上起干扰效果的杂点。 其实很简单,首先做一个
- 一、 基础使用1.1 logging使用场景日志是什么?这个不用多解释。百分之九十的程序都需要提供日志功能。Python内置的logging
- 如下所示:#tensorflow 中从ckpt文件中恢复指定的层或将指定的层不进行恢复:#tensorflow 中不同的layer指定不同的
- counter 是一种特殊的字典,主要方便用来计数,key 是要计数的 item,value 保存的是个数。from collections