gpt4 book ai didi

Django自定义处理程序404显示404,但提供 header 200

转载 作者:行者123 更新时间:2023-12-04 04:43:46 24 4
gpt4 key购买 nike

我为经过身份验证的Django网站制作了一个自定义处理程序404,以避免信息泄漏。

def check_logged_in_404(request):
""" Custom 404. Show friendly 404 when logged in and redirect to /login
when not logged in.
"""
if request.user.is_authenticated():
return render_to_response('404.html')
else:
return HttpResponseRedirect('/login')

从功能上讲,它确实满足我的要求。但是,404返回页的状态为200,这是正确的代码方式。但这显然需要返回404状态。

raise404不起作用,因为如果不以无限递归结束,它将返回此处并因此导致相同的问题。

我尝试了HttpResponseNotFound,但这仅将字符串作为参数而不是模板,这不是DRY式的。

我手动尝试设置 header 与:
    response = render_to_response('404.html')
response['Status'] = "Not Found - 404"
return response

然后确实设置了状态 header ,但浏览器仍然显示200。

我没办法了..任何有技巧的人,请成为我的英雄... :)

感谢和问候,

杰拉德。

编辑:我尝试过各种状态字段值,但没有运气:(

最佳答案

我会使用 render_to_string HttpResponseNotFound ,例如return HttpResponseNotFound(render_to_string('404.html'))

关于Django自定义处理程序404显示404,但提供 header 200,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1812470/

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