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')),

按照如上配置就能完美上传图片和文件了。

Django项目使用ckeditor详解(不使用admin)

来源:https://www.cnblogs.com/PyKK2019/p/11804594.html

标签:Django,ckeditor,admin
0
投稿

猜你喜欢

  • vue-element-admin中node-sass换成dart-sass,安装依赖报code 128多种问题的解决方法

    2024-05-28 16:10:48
  • 如何安装多版本python python2和python3共存以及pip共存

    2021-03-23 05:08:58
  • JavaScript函数的调用以及参数传递

    2024-04-18 10:32:30
  • 在TensorFlow中实现矩阵维度扩展

    2021-09-21 17:50:15
  • Python列表操作方法详解

    2021-05-17 14:45:58
  • 在Python的gevent框架下执行异步的Solr查询的教程

    2022-12-29 11:26:49
  • python实现音乐下载的统计

    2021-07-07 20:08:54
  • python读取word 中指定位置的表格及表格数据

    2021-04-10 02:42:21
  • js检测浏览器语种,适合于多语言版本的站点

    2007-09-12 19:16:00
  • 在Python中测试访问同一数据的竞争条件的方法

    2023-03-29 15:04:06
  • MySQL单表百万数据记录分页性能优化技巧

    2024-01-20 01:34:33
  • Python range与enumerate函数区别解析

    2022-03-05 21:40:20
  • 线上MYSQL同步报错故障处理方法总结(必看篇)

    2024-01-27 14:57:33
  • python 环境安装及编辑器配置方法小结

    2021-09-13 02:39:25
  • python numpy生成等差数列、等比数列的实例

    2023-04-16 14:43:58
  • 怎样开启phpStudy服务器

    2023-05-25 00:38:06
  • Scrapy框架基本命令与settings.py设置

    2021-12-03 14:05:47
  • Vue2.0实现1.0的搜索过滤器功能实例代码

    2024-05-09 10:40:30
  • Python基础之进程详解

    2023-07-10 23:58:43
  • Python同时向控制台和文件输出日志logging的方法

    2021-10-12 07:35:11
  • asp之家 网络编程 m.aspxhome.com