我是Django的新手,并且在我的views.py中有一些代码:
try:
myfunction()
except:
assert False, sys.exc_info()[0]
这非常有用,因为如果出现错误,我会收到包含大量有用信息的电子邮件。 问题是它还将用户重定向到Webfaction系统错误页面。我想知道的是,我如何仍然获得有用的错误电子邮件,但将用户重定向到我自己的错误页面?
另外,这是处理Django错误的最佳方法吗?
答案 0 :(得分:4)
这在很多层面都是错误的。
首先,没有理由只抓一个例外来筹集另一个例外。如果您的应用程序引发异常,那么Django自己的中间件将捕获它,并且取决于您是否有DEBUG=True
,要么显示详细的调试页面,要么将异常邮寄给{{1}中提到的用户设置。
其次,你永远不应该得到一个Webfaction错误页面 - 我甚至无法想象这是怎么回事。如果您希望用户看到一个不错的错误页面,您应该定义404.html和500.html模板,如果您的需求更复杂,则应定义完整的错误处理视图。这已完全解释为in the documentation。
答案 1 :(得分:1)
如果出现问题,请使用mail_admins自行发送邮件?
例如
from django.template.loaders import render_to_string
...
try:
#something cool but edgy here
except YourFavouriteException, yfe:
message_body = render_to_string('path/to/a/template/if/you/want.txt', {'exception': yfe, 'type_of_exception': type(yfe) } ## you could add more detail to this, of course
mail_admins('Something exploded', message_body)