如何在管理后台设置django的上传处理器?

6 投票
1 回答
556 浏览
提问于 2025-04-15 19:24

我正在尝试在Django的后台管理界面中添加一个上传进度条。这个应用只是项目的一小部分,所以我不想在settings.py中设置自定义的上传处理器。

我可以通过 request.upload_handlers.insert(0, UploadProgressHandler(request)) 来设置上传处理器,但在Django后台管理类的 add_view 方法中却无法这样做。这样做会出现一个异常:

如果你在读取 request.POSTrequest.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)

这个装饰器会“包裹”原来的视图,这样你就可以在调用原来的视图函数之前,先检查一下请求的参数。

撰写回答