首页 > 其他分享 >Django-CKEditor富文本编译器相关知识介绍

Django-CKEditor富文本编译器相关知识介绍

时间:2023-08-23 16:25:18浏览次数:48  
标签:ckeditor MEDIA Django 编译器 media django 图片 上传 CKEditor

安装

pip install django-ckeditor

pip install pillow

注册富文本编译器

在settings中的INSTALLED_APPS 代码块中加入ckeditor和ckeditor_uploader(可支持图片上传)

配置富文本编译器

在settings中增加以下代码:

# 指定富文本编辑器或其他上传文件的根目录,这里为/test_blog/media/
MEDIA_ROOT=os.path.join(BASE_DIR,'media')
# MEDIA_URL指定上传图片的路径前缀字符串,即在模板文件中遇到前缀为/media/的URL路径会解析为/test_blog/media/
MEDIA_URL='/media/'
# CKEDITOR_UPLOAD_PATH设置富文本编辑器的上传文件的相对路径
# 它与MEDIA_ROOT组成完整的路径,即/test_blog/media/upload/
CKEDITOR_UPLOAD_PATH='upload'
# 设置图片处理的引擎为pillow,用于生成图片缩略图,在编辑器里浏览上传的图片
CKEDITOR_IMAGE_BACKEND='pillow'

 

配置URL

在urls中进行修改,首先通过path('ckeditor/',include('ckeditor_uploader.urls'))引入ckeditor的URL配置文件到项目中。

from django.contrib import admin
from django.urls import path,include
from django.conf.urls.static import static
from . import settings
urlpatterns = [
    path('admin/', admin.site.urls),
    path('ckeditor/',include('ckeditor_uploader.urls')),
] + static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT) #没有这一行将无法显示上传的图片

上传的图片要存储到media中,因此需要设置media可被访问。在调试模式下增加最后一行代码让django取得MEDIA_ROOT指向的路径。建立MEDIA_URL与MEDIA_ROOT的对应关系,使静态模块为指定静态文件夹提供服务。

其他可选配置

在settings中增加以下几项,对富文本编辑器进行配置:

  • CKEDITOR_BROWSE_SHOW_DIRS = True,在编辑器里浏览上传的图片时,图片会以路径分组、以日期排序。
  • CKEDITOR_ALLOW_NONIMAGE_FILES=False,不允许非图片文件上传,默认为true
  • CKEDITOR_RESTRICT_BY_USER=True,限制用户浏览图片的权限,只能浏览自己上传的图片,图片会传到以用户名命名的文件夹下,但超级用户能查看所有图片。
  • 如果想自定义编辑器,添加或删除一些按钮,需要在settings中设置如下:
CKEDITOR_CONFIGS = {
    # 配置名为default时,django-ckeditor默认使用这个配置
    'default':{
        # 使用简体中文
        'language':'zh-cn',
        # 设置富文本编辑器的高度和宽度
        'width':'600px',
        'height':'200px',
        # 设置工具栏为自定义,名字为Custom
        'toolbar':'Custom',
        # 添加富文本编辑器的工具栏上的按钮
        'toolbar_Custom':[
            ['Bold','Italic','Underline'],
            ['NumberedList','BulletedList'],
            ['Image','Link','Unlink'],
            ['Maximize']]}
    # 设置另一个django-ckeditor配置,名为test
    'test':{
        
    }
}

使用非默认配置时,需要在RichTextUploadingField()里指定该配置名称,代码如下:

class Blog(models.Model):
    # 编辑器使用test配置
    body=RichTextUploadingField(config_name='test',verbose_name='文本内容')

Django CKEditor默认只允许Django系统用户(Django Admin管理后台中的登录用户)具有图片上传权限,因此使用图片上传功能需要先登录。还有就是django-ckeditor富文本编辑器一般只在Django Admin管理后台的页面上使用,如果在非管理后台使用要引入相应的JavaScript文件

标签:ckeditor,MEDIA,Django,编译器,media,django,图片,上传,CKEditor
From: https://www.cnblogs.com/p4567/p/17651977.html

相关文章

  • python-django-ORM-F查询和Q查询
    F查询如果要比较一个表中的两个不同的字段,可以使用F查询importosif__name__=='__main__':#加载Django项目的配置信息os.environ.setdefault("DJANGO_SETTINGS_MODULE","mysite2.settings")#导入Django,并启动Django项目importdjangod......
  • 如何复制word的图文到CKEditor中自动上传
    ​ 在之前在工作中遇到在富文本编辑器中粘贴图片不能展示的问题,于是各种网上扒拉,终于找到解决方案,在这里感谢一下知乎中众大神以及TheViper。通过知乎提供的思路找到粘贴的原理,通过TheViper找到粘贴图片的方法。其原理为一下步骤:监听粘贴事件;【用于插入图片】获取光标位置;【......
  • 如何复制word的图文到FCKEditor中自动上传
    ​ 如何做到ueditor批量上传word图片?1、前端引用代码<!DOCTYPE html PUBLIC "-//W3C//DTDXHTML1.0Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head>......
  • 【Django框架基础总结】
    【一】Django框架之初识【二】Django框架之静态文件配置说明【三】Django框架之数据操作(ORM)初识【四】Django框架之ORM创建表关系【五】Django框架之请求生命周期流程图【六】Django框架之路由层【七】Django框架之视图层【八】Django框架之模板层【九】Django框架之模......
  • Django项目在CentOS7下部署
    Ubuntu部署Django项目方法详解:请看此文https://www.django.cn/article/show-22.html Django所有的部署都是基于asgi和wsgi,所以django早就设计好了,你们使用对应的方式部署都好,这里不做细讲,看相关文章即可。 部署是基于:centos7+nginx+uwsgi+python3+django之上做的软件版......
  • python 外部文件调用Django程序操作model
    importosimportdjango#设置Django配置文件文件夹所在位置,并进行系统环境配置os.environ.setdefault("DJANGO_SETTINGS_MODULE","项目配置文件夹名称.settings")#加载Django模块,初始化Django环境django.setup()#导入需要调用的modelfrom应用名称.modelsimport......
  • Django自定义中间件验证用户token信息
    1.新建middleware.pyfromdjango.urlsimportreversefromrest_framework.responseimportResponsefromutils.tokenimportcheck_tokenfromdjango.httpimportJsonResponse,HttpResponseRedirectfromyshop.modelsimportMyUsertry:fromdjango.utils.de......
  • Django 基于DRF的列表增删改查
    基于DRF的列表增删改查目录基于DRF的列表增删改查1表结构2基于APIView实现对course表获取所有数据,增加数据2.1ser2.2views2.3urls3基于ListAPIView、CreateAPIView实现获取所有数据,增加数据3.1ser3.2views3.3urls4基于ModelViewSet实现Course表实现增删改查4.1ser4.2......
  • Django 解决同源跨域问题
    Django解决同源跨域问题目录Django解决同源跨域问题1sitea1.1urls配置1.2app01.views配置1.3index.html配置2siteb2.1urls配置2.2app01.views配置由于浏览器具有同源策略的限制:在发送Ajax请求时,如果当前浏览器的URL是a.com,而页面中向b.com发送ajax请求,请求可以正......
  • django 上传文件
    前后端分离下django框架上传文件实现方式实现方式一,通过model字段FileFiled()来实现model类classReport(models.Model):p_id=models.PositiveIntegerField('病人ID')file=models.FileField(upload_to='uploads/report/%Y/%m/%d/')def__str__(self):......