【问题标题】:django raise other status code than http404?django 会引发除 http404 之外的其他状态代码吗?
【发布时间】:2012-11-08 08:41:46
【问题描述】:
我是一般网络/django 世界的新手。我一直在为我所有的错误案例提出Http404(从我的角度来看)。我认为除了404 之外,针对不同的错误提出401, 402.. 对我来说会更好地检测出哪里出了问题。
我发现return HttpResponse(status=401) 可以胜任这项工作。但这被认为是可接受的做法吗?我不应该因为每个状态代码都意味着什么而干扰状态代码吗?
【问题讨论】:
标签:
django
http-response-codes
【解决方案1】:
每个状态码都有特定的含义。请参阅维基百科页面上的List of HTTP status codes 页面了解每个代码的含义。
您应该为每个响应选择适当的状态代码。例如,您应该只在客户端未经授权时使用401。将您自己的含义分配给状态代码并不是一个好主意。
如果您想让检测错误更容易,您可以改为set a custom header:
response = HttpResponse()
response['My-App-Error'] = error_code
return response
【解决方案2】:
是的,您可以继承 HttpResponse 来处理不同类型的 HTTP 响应。
更多信息here
例如,您可以将HttpResponse 和status code 403 发送为:
from django.http import HttpResponseBadRequest
def my_view(request):
# ...
return HttpResponseBadRequest('<h1>You are not authorized to view this page</h1>')