【问题标题】: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

      例如,您可以将HttpResponsestatus code 403 发送为:

      from django.http import HttpResponseBadRequest
      
      def my_view(request):
          # ...
      
      
          return HttpResponseBadRequest('<h1>You are not authorized to view this page</h1>')
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-07-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多