You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django2.2.6 admin面板RichTextUploadingField不显示问题排查

问题原因

RichTextField能正常显示但RichTextUploadingField加载失败,和Django 2.2.6版本本身兼容性无关,核心是配置存在3处错误:

  • urls.py中ckeditor路由缺少尾斜杠,会导致上传相关接口路径匹配失败,富文本组件初始化时请求接口报错中断渲染
  • 缺少MEDIA_URL、MEDIA_ROOT配置,且CKEDITOR_UPLOAD_PATH配置错误:该参数是相对于MEDIA_ROOT的相对存储路径,直接写media/会造成路径重复嵌套,上传的图片资源无法被正常访问
  • 未配置开发环境下的media文件服务路由,且未确认静态文件收集、依赖安装情况,会导致组件所需的JS/CSS资源、上传接口全部返回404,组件无法正常渲染

基础版RichTextField不依赖上传接口、不涉及media资源访问,所以不受上述配置错误影响,可以正常显示。

修复方案

按以下步骤逐一修正配置即可:

  1. 修正项目根urls.py配置
    补全ckeditor路由的尾斜杠,添加开发环境下的media文件路由支持,参考代码:
    from django.conf import settings
    from django.conf.urls.static import static
    from django.urls import path, include
    
    urlpatterns = [
        # 保留你项目原有的其他路由配置
        path('ckeditor/', include('ckeditor_uploader.urls')), # 注意路径末尾的斜杠不能漏
    ]
    
    # 开发环境自动映射media路径,生产环境需要由web服务器(Nginx/Apache)配置media路径映射
    if settings.DEBUG:
        urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
    
  2. 修正settings.py配置
    补全缺失的media相关配置,调整CKEditor上传路径,参考代码:
    import os
    
    INSTALLED_APPS = [
        # 保留你项目原有的其他app配置
        'ckeditor',
        'ckeditor_uploader',
    ]
    
    # 原有静态文件配置保留
    STATIC_URL = '/static/'
    STATIC_ROOT = os.path.join('/home/myapp/public_html/static')
    
    # 新增media文件配置
    MEDIA_URL = '/media/'
    MEDIA_ROOT = os.path.join('/home/myapp/public_html/media')
    
    # 修正上传路径:文件会实际存在 MEDIA_ROOT/uploads/ckeditor/ 目录下
    CKEDITOR_UPLOAD_PATH = "uploads/ckeditor/"
    
  3. 完成配置后执行检查操作
    • 安装图片处理依赖:执行pip install pillow,CKEditor图片上传功能依赖该库
    • 生产环境部署前执行python manage.py collectstatic,将CKEditor相关的JS/CSS等静态文件收集到STATIC_ROOT目录,避免静态资源404
    • 给MEDIA_ROOT目录配置Django进程可读写的权限,避免上传时因权限问题报错
    • 重启Django服务,清空浏览器缓存后重新进入admin后台即可看到RichTextUploadingField正常加载,图片上传功能可正常使用

内容的提问来源于stack exchange,提问作者devo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 12:09:46