为了账号安全,请及时绑定邮箱和手机立即绑定

Django - 自定义处理程序500不起作用,尽管有以下文档

Django - 自定义处理程序500不起作用,尽管有以下文档

红糖糍粑 2022-10-05 10:07:48
我按照文档的步骤逐步搜索,并在任何地方搜索解决方案,但我的自定义不起作用。我将詹戈2.2与Python 3.8一起使用。handler500这是我 urls.py:urlpatterns = [    # some urls]handler500 = "path.to.my.handler"我的处理程序:def handler500(request, exception=None, *_, **_k):    print("yeah I got called")    return render(request, "my_template.html", {        "exception": exception    })我的观点:def example_view(request):    # I tried all of these    return HttpResponseServerError()    return HttpResponse(status=500)    raise Exception("There was an error")  # This just shows: "A server error occurred.  Please contact the administrator." in the browser.    raise HttpResponseServerError()  # This shows the same message as above.    a_typo  # This typo also shows the same message as above.为什么这些错误中的任何一个都不显示我的模板?处理程序在任何时候都不会被执行。该函数从未被调用。print()编辑我设置了一个404处理程序并对其进行了测试,它工作得很好。为什么不是500?
查看完整描述

3 回答

?
DIEA

TA贡献1820条经验 获得超2个赞

找到解决方案

我有一个名为 的设置设置为 。这似乎禁用了我的自定义处理程序。它现在完美地工作。DEBUG_PROPAGATE_EXCEPTIONSTrue


查看完整回答
反对 回复 2022-10-05
?
HUH函数

TA贡献1836条经验 获得超4个赞

谢谢胡安,这是必要的设置。文档参考DEBUG = False

如果 DEBUG 设置为 True(在设置模块中),则永远不会使用 500 视图,而是显示回溯,并显示一些调试信息


查看完整回答
反对 回复 2022-10-05
?
慕丝7291255

TA贡献1859条经验 获得超6个赞

引用詹戈文档

如果实现自定义视图,请确保它接受参数并返回 .您必须在 .requestHttpResponseServerErrorHttpResponseServerErrorhandler500

实现所有这些的一个非常简单的方法就是包含在您的视图中

def handler500(request, exception, template_name="my_template.html"):
    response = render_to_response("my_template.html")
    response.status_code = 500
    return response

这样,您就不需要更改 URL 协议中的任何内容。此方法确实要求模板位于根模板文件夹的顶部。也许把它命名为“500.hml”,它会跳到顶部。


查看完整回答
反对 回复 2022-10-05
  • 3 回答
  • 0 关注
  • 91 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信