Django:как загрузить файл изображения с помощью ckeditor?

я пишу функцию для загрузки файла изображения

import os
import uuid
from django.views.decorators.csrf import csrf_exempt
from django.http import JsonResponse
from django.conf import settings

@csrf_exempt
def upload_file(request):
    """ ckeditor5图片上传 """
    upload = request.FILES.get('upload')
    # 生成uuid 
    uid = ''.join(str(uuid.uuid4()).split('-'))
    # 修改图片名称 
    names = str(upload.name).split('.')
    names[0] = uid
    # 拼接图片名
    upload.name = '.'.join(names)
    # 构造上传路径
    print(upload.name, '='*100)
    new_path = os.path.join(settings.MEDIA_ROOT, 'upload/', upload.name)
    # 上传图片
    with open(new_path, 'wb+') as destination:
        for chunk in upload.chunks():
            destination.write(chunk)

    # 构造要求的数据格式并返回
    filename = upload.name
    url = '/media/upload/' + filename
    retdata = { 'url': url, 
                'uploaded': '1',
                'fileName': filename }
    return JsonResponse(retdata)


это настройка url

from django.contrib import admin
from django.urls import include, path
from django.conf import settings
from django.conf.urls.static import static
from utils.upload import upload_file

urlpatterns = [
    path('admin/', admin.site.urls),
    path('users/', include('users.urls')),
    path('', include('blog.urls')),
    path('uploads/', upload_file, name='uploads')   # 上传图片url

] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

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

это ckeditor.js, я добавляю

ckfinder: {
        uploadUrl: '/uploads/'
    },

в него

import ......

class Editor extends ClassicEditor {}

// Plugins to include in the build.
Editor.builtinPlugins = [
    ......
];

// Editor configuration.
Editor.defaultConfig = {
    toolbar: {
        ......
    },
    language: 'zh',
    image: {
        ......
    },
    ckfinder: {
        uploadUrl: '/uploads/'
    },
    table: {......}
};

export default Editor;

но когда я нажимаю кнопку изображения для загрузки файла изображения, она не работает

он даже не выполнил этот код

print(upload.name, '='*100)

я думаю проблема в url, но я не знаю как ее решить

пожалуйста, помогите мне!

Вернуться на верх