Python ckeditor_上传器动态图像上传路径
我有一个Django应用程序,它要求用户在每个文档中上载多个图像。应用程序已安装django ckeditor,但上载的图像最终位于通过Python ckeditor_上传器动态图像上传路径,python,django,ckeditor,django-ckeditor,Python,Django,Ckeditor,Django Ckeditor,我有一个Django应用程序,它要求用户在每个文档中上载多个图像。应用程序已安装django ckeditor,但上载的图像最终位于通过ckeditor\u UPLOAD\u路径设置设置的同一文件夹中。我希望路径是动态的,基于URL方案 例如,在https://myapp/report/1/finding/5应位于/ckeditor\u base\u path/report/1/finding/5/my\u img.png中 不幸的是,处理设置路径的视图函数的URL是由小部件()在视图创建上下文
ckeditor\u UPLOAD\u路径设置设置的同一文件夹中。我希望路径是动态的,基于URL方案
例如,在https://myapp/report/1/finding/5
应位于/ckeditor\u base\u path/report/1/finding/5/my\u img.png
中
不幸的是,处理设置路径的视图函数的URL是由小部件()在视图创建上下文
参数之前设置的
我希望将参数发送到URL参数进行处理。非常感谢您在这方面提供的任何帮助或建议。如果这对其他人有帮助,以下是我所做的。当用户浏览时,他们将被限制在包含查找图像的文件夹中,因为它们特定于报告的该部分。同样,上传图像将把它发送到同一个文件夹
简而言之,您必须:
将CKEditor上载程序URL指向您的视图版本
通过相应的表单视图更新CKEditor Uploader小部件
覆盖CKEditor上载程序ImageUploadView
和browse
视图以创建所需的路径
例子
更新的编辑器URL路径
我也遇到了同样的问题,并看了你的答案,但我认为有一个可能更容易的解决办法
对于要执行的每个“唯一”上载操作,请在settings.py
中创建一个新配置:
CKEDITOR_CONFIGS = {
'action_a' : {
'filebrowserUploadUrl': '/path/to/action/a/handling/view/'
},
'action_b' : {
'filebrowserUploadUrl': '/path/to/action/b/handling/view/'
}
}
创建表单时,将CKEditorUploadingWidget
的config\u name
设置为所需操作
如果您不需要处理任何URL参数,比如在我的例子中,我只想将通过不同编辑器界面上传的文件放在不同的目录中,那么接下来的步骤相对简单。在相应视图中处理并保存上载的文件
但是,如果确实需要根据URL参数执行操作,则可以在相应的视图中检查请求
,以获取上载文件的页面:
referrer = request.META.get('HTTP_REFERER')
然后,您可以从URL中提取所需的参数(在本例中为报告ID和查找ID),并使用它们上载到您想要的任何目录
CKEDITOR_CONFIGS = {
'action_a' : {
'filebrowserUploadUrl': '/path/to/action/a/handling/view/'
},
'action_b' : {
'filebrowserUploadUrl': '/path/to/action/b/handling/view/'
}
}
referrer = request.META.get('HTTP_REFERER')