【发布时间】:2011-09-05 14:58:23
【问题描述】:
我有一个 500.html 模板,它会在我的应用程序爆炸时加载,但我想知道是否有任何方法可以在模板中输出异常消息?
如果我这样做:
raise Exception("You broke it!")
当 DEBUG 标志设置为 True 时,这将加载 500.html,但是如何访问模板中的异常消息?比如:
{{ exception.message }}
非常感谢。
G
【问题讨论】:
我有一个 500.html 模板,它会在我的应用程序爆炸时加载,但我想知道是否有任何方法可以在模板中输出异常消息?
如果我这样做:
raise Exception("You broke it!")
当 DEBUG 标志设置为 True 时,这将加载 500.html,但是如何访问模板中的异常消息?比如:
{{ exception.message }}
非常感谢。
G
【问题讨论】:
看看这个答案:
How do I include a stacktrace in my Django 500.html page?
将异常传递给您的模板/用户并不好,因为它可能会显示一些您不希望外部可用的内部工作,但如果您确实需要,您可以编写自己的 500 视图,获取异常并将其传递给您的 500 模板
views.py
def custom_500(request):
t = loader.get_template('500.html')
type, value, tb = sys.exc_info(),
return HttpResponseServerError(t.render(Context({
'exception_value': value,
})))
在 urls.py
中的某处handler500 = 'mysite.views.my_custom_error_view'
模板
{{ exception_value }}
在此处了解更多信息:https://docs.djangoproject.com/en/1.6/topics/http/views/#the-500-server-error-view
【讨论】:
我知道这是一个老话题,但我只想说清楚:
如果您想要自定义视图,答案是正确的!默认视图将从项目的主模板目录中加载 500.html(也包括 404.html 和其他)。
因此,如果您只需要更改静态页面内容,例如在错误页面中插入一些图像,您所要做的就是在此位置创建一个模板文件。
【讨论】: