2011-02-03 42 views
2

大家好 我刚刚意识到的部署,调试=假,做这样的事情:正确的方式来处理错误在Django

try: 
     fb_friends_raw = retrieve_and_store_fb_friends(request.facebook.uid, request.facebook.access_token) 
    except Exception, e: 
     messages.error(request, 'Cannot retrieve your friends, do it later.' + str(e)) 
     return HttpResponseServerError('Cannot retrieve your friends, do it later.' + str(e)) 

将带给你只是一个普通的HTML文件与错误的主体而不是500.html。我不认为404是合适的,因为它是一个服务器错误,而不是找不到页面。

显然,当用户遇到这个问题时,我想渲染具有注销按钮的基本模板,用户可以从头开始。我目前在中有500.html和404.html。

处理部署错误的正确方法是什么?

回答

0

这是因为HttpServerResponse是一个简单的HttpResponse http://docs.djangoproject.com/en/dev/ref/request-response/#django.http.HttpResponseServerError

500.html加载时视图抛出一个异常http://docs.djangoproject.com/en/dev/topics/http/views/#the-500-server-error-view

如果你想渲染这种异常的特定模板,你可以简单地返回常规反应,但修改status_code到500
http://docs.djangoproject.com/en/dev/ref/request-response/#django.http.HttpResponse.status_code

例如:

response = direct_to_template(request, "mytemplate.html", {}) 
response.status_code = 500 
return response 
+0

好,谢谢。根据文档,“”“Django将通过电子邮件发送ADMINS设置中列出的用户,只要您的代码引发未处理的异常并导致内部服务器错误(HTTP状态码为500)。”“”因此,如果我返回响应状态码为500,我不认为这会触发电子邮件。然后我将使用500服务器错误视图。 – disappearedng 2011-02-03 17:00:28

相关问题