自定义模板中的Django 500消息

时间:2011-05-31 15:55:19

标签: django django-templates

我有一个500.html模板,只要我的应用程序爆炸就会加载,但我想知道是否有任何方法可以在模板中输出异常消息?

所以,如果我这样做:

raise Exception("You broke it!")

当DEBUG标志设置为True时,这将加载500.html但是如何在模板中访问异常消息?类似的东西:

{{ exception.message }}

非常感谢。

2 个答案:

答案 0 :(得分:18)

看看这个答案:

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

答案 1 :(得分:3)

我知道这是一个老话题,但我只想说清楚:

如果你想要一个custon视图,答案是正确的!默认视图将从项目的主模板目录加载500.html(也是404.html和其他),如果它在那里。

因此,如果您只需要更改静态页面内容,例如在错误页面中插入一些图像,那么您只需要在此处创建模板文件。