正确的方法来处理django中的错误

时间:2011-02-03 16:46:16

标签: django

大家好 我刚刚意识到在部署时,debug = False,做这样的事情:

    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中有。

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

1 个答案:

答案 0 :(得分: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