gpt4 book ai didi

python - 如何在 Django View 中检测重定向

转载 作者:行者123 更新时间:2023-12-01 07:25:04 26 4
gpt4 key购买 nike

我有一个返回重定向的 View 。

return redirect(reverse('my-view-name'))

这是一种在 View 方法内检测重定向的方法吗?

我已搜索 request 对象属性,但找不到任何指示重定向的属性。

最佳答案

重定向只是意味着您返回 HttpResponseRedirect object [Django-doc]状态代码 302 和包含您重定向到的位置的 header Location。该响应没有什么特别之处,并且目标 View 不是由重定向响应本身触发的。

收到此类响应的浏览器可以通过访问该链接进行操作,然后它将触发您重定向到的 View 。但浏览器本身并不会这样做(您通常可以更改一些设置以使您的浏览器(不)遵循此类重定向)。

例如,您可以 implement your own middleware通过这样的重定向来执行一些操作:

def redirect_processing_middleware(get_response):

def middleware(request):
response = get_response(request)
if <b>300 <= response.status_code < 400</b>:
# the response is a redirect
# ...
pass

return middleware

另一种方法是在 redirect(..) 调用上添加看门狗,但这可以通过简单地创建 HttpResponse 来规避,然后手动更改该响应将其转换为重定向响应。

您可以进行一些静态代码分析(自动或手动)。但由于Python的动态特性,不可能确定哪些 View 会触发重定向:可以通过使用代理函数等来混淆redirect调用,或者动态地alter/monkey修补代码,以便在不(显式)调用 redirect(..) 的情况下进行重定向。

关于python - 如何在 Django View 中检测重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57493253/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com