我在运行Django 1.0
因此,我将把调试设置更改为false。
尽管如此,当错误发生时,我仍然希望将堆栈跟踪包含在我的500.html页面上,这样,用户就可以复制并粘贴错误,并将其发送给开发人员。
发布于 2018-08-15 08:56:12
自动记录500秒,这样:
Joel建议甚至在应用程序出现故障时自动在错误跟踪器中创建票证。 就个人而言,我使用开发人员可以订阅的stacktraces,url等创建(私有)RSS提要。
另一方面,向用户显示堆栈跟踪可能会泄露恶意用户可能用来攻击您的站点的信息。过于详细的错误消息是SQL注入攻击的典型垫脚石之一。
你可以从sys.exc_info调用中获取异常信息。 格式化显示的回溯来自回溯模块:
import traceback
import sys
try:
raise Exception("Message")
except:
type, value, tb = sys.exc_info()
print >> sys.stderr, type.__name__, ":", value
print >> sys.stderr, '\n'.join(traceback.format_tb(tb))
输出:
Exception : Message
File "exception.py", line 5, in <module>
raise Exception("Message")
发布于 2018-08-15 09:43:15
如果我们想要显示生成的异常,在您的模板(500.html)上,我们可以编写您自己的500个视图,抓取异常并将其传递给500个模板。
步骤如下:
import sys,traceback
def custom_500(request):
t = loader.get_template('500.html')
print sys.exc_info()
type, value, tb = sys.exc_info()
return HttpResponseServerError(t.render(Context({
'exception_value': value,
'value':type,
'tb':traceback.format_exception(type, value,
tb)},
RequestContext(request))))
from django.conf.urls.defaults import *
handler500 = 'project.web.services.views.custom_500'
{{ exception_value }}{{value}}{{tb}}
https://stackoverflow.com/questions/-100000571
复制相似问题