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, но я не знаю как ее решить
пожалуйста, помогите мне!