Django 在中间件中检测响应重定向

Django 在中间件中检测响应重定向,django,middleware,Django,Middleware,我有一些定制的中间件,它创建了一个以前URL的堆栈,以便可以从后续页面导航回它们 在我的一个将其url添加到堆栈的视图中,有一些逻辑可以将响应重定向到不同的页面,因此: @middleware_decorator # tells the middleware to add this views url to the stack when it is called def some_view(request): ... stuff ... if some_condition:

我有一些定制的中间件,它创建了一个以前URL的堆栈,以便可以从后续页面导航回它们

在我的一个将其url添加到堆栈的视图中,有一些逻辑可以将响应重定向到不同的页面,因此:

@middleware_decorator # tells the middleware to add this views url to the stack when it is called
def some_view(request):
    ... stuff ...

    if some_condition:
        return HttpResponseRedirect(url, kwargs)
我遇到的问题是,如果遇到响应重定向条件,我不想将当前url添加到堆栈中,因为当它们从下一个页面返回时,它们将再次遇到相同的条件,并重定向到它们刚刚离开的页面。我在中间件中有一个“remove”函数,但我不能这样调用它:

if some_condition:
    Middleware.remove("this views url")
    return HttpResponseRedirect(url, kwargs)

由于逻辑原因,视图url被添加到中间件的process_response阶段,因此在重定向发生后发生。我希望在第一个视图从“重定向刚刚发生”重定向后,中间件中会有某种检测方法然后在中间件中,我可以决定是否添加它。

您可以在请求中设置一个标志,确定是否应该将它添加到堆栈中,并在
process\u response

process_response(self, request, response):
    if request.addToStack and not instanceof(response, HttpResponseRedirect):
        #Add url from request to stack