我正在使用 GAE Blobstore 为我的 Django 应用程序上传和提供图像。对于管理员用户,可以通过将图像包装在 Django 模型中Image
并为此模型提供标准管理功能来进行维护:添加、更新、删除。
为了执行实际上传,我修改change_form.html
了 Image 模型的模板并替换{{ form_url }}
为{{ blobstore_url}}
. {{ blobstore_url }}
通过覆盖render_change_form
of 来设置ImageAdmin
。
我注意到通过调用create_upload_url("/admin/some/url")
,我得到了 GAE Blobstore 上传工具的编码 url,函数的参数 ("/admin/some/url") 实际上是 GAE/Blobstore 在上传完成后重定向到的 url。
与问题无关,但我也注意到,在我的第一种方法中,我只是覆盖了的值,{{ form_url }}
但这似乎不起作用,因为没有设置表单的操作;它要么被其他地方覆盖,要么被忽略。
虽然这可行,但主要缺点是这种方法需要我将“admin/some/url”实现为一个视图,从中我可以处理模型图像所需的添加或更改,这实际上是代码的重复,已经作为默认管理员支持这些功能。
create_upload_url()
所以我的问题是,为了在上传完成后运行图像模型的验证和数据库更新的标准管理功能,正确的 url 是什么?
编辑
或者,在默认管理操作(例如插入或更新)完成后执行上传可能是一个更好的设计......