自定义500错误有时会出现空白页

时间:2019-10-06 14:42:26

标签: django error-handling http-status-code-500

当我尝试测试自定义500错误页面时。如果测试有效,我将在错误日志中得到一个空白页,上面没有任何内容(“内部服务器错误”)。如果发生错误,我将获得自定义错误页面。

在视图中:

def handler500(request):
    response = render_to_response("500.html")
    response.status_code = 500
    return response

def my_test_500_view(request):
    # Return an "Internal Server Error" 500 response code.
    return HttpResponse(status=500)

在Urls.py中:

my path is : path('test500/', views.my_test_500_view, name='test500')

也:

handler500 = 'myapp.views.handler500'

如果我实际上通过从上面的my_test_500_view中删除HttpResponse的导入行来创建错误,则实际上会加载自定义500错误页面,并且我会在服务器上收到此错误,即实际错误。

NameError: name 'HttpResponse' is not defined

我的测试有什么问题,它返回空白页。我的500页纸真的有效吗?我认为它无法正常运行,因为我收到了来自Google搜索的关于500错误页面失败的电子邮件警告,并且经常收到此错误:

TypeError: view must be a callable or a list/tuple in the case of include().

请帮助,这是怎么回事。

1 个答案:

答案 0 :(得分:1)

返回HttpResponse(status=500)不会导致Django调用handler500视图,它只会返回一个空白页(您未在HttpResponse中指定任何内容)并将状态设置为500响应头。

如果您要测试handler500,请在测试视图中仅raise个例外。任何例外都可以。