如何在管理后台设置django的上传处理器?
我正在尝试在Django的后台管理界面中添加一个上传进度条。这个应用只是项目的一小部分,所以我不想在settings.py中设置自定义的上传处理器。
我可以通过 request.upload_handlers.insert(0, UploadProgressHandler(request))
来设置上传处理器,但在Django后台管理类的 add_view
方法中却无法这样做。这样做会出现一个异常:
如果你在读取
request.POST
或request.FILES
之后尝试修改request.upload_handlers
,Django会抛出一个错误。
我还尝试在 add_view
上使用装饰器,但我不知道如何访问 request.upload_handlers
。
有没有人能帮我一下?
1 个回答
1
看看这个和管理应用一起提供的装饰器的源代码:
def staff_member_required(view_func):
"""
Decorator for views that checks that the user is logged in and is a staff
member, displaying the login page if necessary.
"""
@wraps(view_func)
def _checklogin(request, *args, **kwargs):
if request.user.is_active and request.user.is_staff:
# The user is valid. Continue to the admin page.
return view_func(request, *args, **kwargs)
这个装饰器会“包裹”原来的视图,这样你就可以在调用原来的视图函数之前,先检查一下请求的参数。