我有一个Django应用程序,要求用户为每个文档上传多个图像。该应用程序已安装django-ckeditor,但上传的图像最终位于CKEDITOR_UPLOAD_PATH
设置所设置的同一文件夹中。我希望基于URL方案的路径是动态的。
例如,在https://myapp/report/1/finding/5
上上传到CKEditor实例的图像应位于/ckeditor_base_path/report/1/finding/5/my_img.png
中。
不幸的是,在视图创建context
参数之前,由窗口小部件(CKEditorUploadingWidget)设置了用于处理设置路径的视图函数的URL。
我希望将参数URL参数发送到ImageUploadView进行处理。对此,我们将提供任何帮助或建议。
答案 0 :(得分:0)
以防万一,这就是我所做的。用户浏览时,由于它们特定于报告的那部分,因此将仅限于包含查找图像的文件夹。同样,上传图片会将其发送到同一文件夹。
总而言之,您必须:
Colorful.Console
和ImageUploadView
视图以创建所需的路径browse
path('myapp/<int:org_id>/report/<int:report_id>/finding/<int:finding_id>/image/upload', never_cache(ck_views.upload),
path('myapp/<int:org_id>/report/<int:report_id>/finding/<int:finding_id>/images', never_cache(ck_views.browse), name='ckeditor_browse'),
答案 1 :(得分:0)
我也遇到了同样的问题,看着你的回答,但我认为有一个可能更简单的解决方案。
对于每个要执行的“唯一”上传操作,请在settings.py
中创建一个新配置:
CKEDITOR_CONFIGS = {
'action_a' : {
'filebrowserUploadUrl': '/path/to/action/a/handling/view/'
},
'action_b' : {
'filebrowserUploadUrl': '/path/to/action/b/handling/view/'
}
}
创建表单时,将config_name
中的CKEditorUploadingWidget
设置为所需的操作。
如果您不需要处理任何URL参数(例如我只是想将通过其他编辑器界面上传的文件放在不同目录中),则后续步骤相对简单。在相应的视图中处理并保存上传的文件。
但是,如果您确实需要根据URL参数执行操作,则可以在相应的视图中检查request
,以获取从中上传文件的页面:
referrer = request.META.get('HTTP_REFERER')
然后,您可以从所需的URL中提取参数-在您的情况下为报告ID和查找ID-并使用它们将其上传到所需的任何目录。