我按照文档的步骤逐步搜索,并在任何地方搜索解决方案,但我的自定义不起作用。我将詹戈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_EXCEPTIONS
True
慕丝7291255
TA贡献1859条经验 获得超6个赞
引用詹戈文档
如果实现自定义视图,请确保它接受参数并返回 .您必须在 .
request
HttpResponseServerError
HttpResponseServerError
handler500
实现所有这些的一个非常简单的方法就是包含在您的视图中
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”,它会跳到顶部。
添加回答
举报
0/150
提交
取消