Bootstrap

Django28——使用Django 富文本CKEditor上传图片


前提:已经安装 django-ckeditor

pip install django-ckeditor

1、安装pillow库

 pip install pillow

2、注册ckeditor_uploader应用

INSTALLED_APPS = [
    ...
    # 注册富文本编辑器 ckeditor
    "ckeditor",
    "ckeditor_uploader",  # 图片上传需注册
]

3、设置媒体资源根目录

使用上传功能,需要设置上传位置。该文件是上传到media目录,所以也需要设置media。创建media文件夹,放在django项目根目录下。

media存放用户上传的景点图片等资源,这些资源文件变动频率较高,因此与静态资源区分不同的存储路径。

# ckeditor上传图片配置项,设置媒体资源的保存路径
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'

在这里插入图片描述

4、设置图片上传路径

正文中添加图片,使用django ckeditor上传,设置保存在配置属性CKEDITOR_UPLOAD_PATH设置的文件夹中,该文件夹必须在媒体资源文件夹的目录下。

CKEDITOR_UPLOAD_PATH = "upload"

5、配置上传url

上传功能需要有地址可以请求,需要提供上传的url。打开全局的urls.py,添加设置到urlpatterns中:

 path('ckeditor/', include('ckeditor_uploader.urls')),  # 此行是新增的

在这里插入图片描述

6、配置media的访问

上传的图片是到media中,不是在static中。我们还需要设置media可被访问

from django.conf.urls.static import static  # 此行是新增
from django.conf import settings  # 此行是新增

urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) 

在这里插入图片描述

7、修改models

  • ckeditor.fields.RichTextField 不支持上传文件的富文本字段
  • ckeditor_uploader.fields.RichTextUploadingField 支持上传文件的富文本字段
from ckeditor_uploader.fields import RichTextUploadingField  # 此句是新增

content = RichTextUploadingField(verbose_name='景点正文') 

在这里插入图片描述

8、刷新后台,查看效果

在这里插入图片描述
点击该按钮弹出如下上传文件框:
在这里插入图片描述
在这里插入图片描述
点击选择文件,上传,确定如下图:
在这里插入图片描述

9、查看后台保存图片的情况

在这里插入图片描述

10、查看数据库情况

在这里插入图片描述

悦读

道可道,非常道;名可名,非常名。 无名,天地之始,有名,万物之母。 故常无欲,以观其妙,常有欲,以观其徼。 此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。

;