状态码
不建议在你的响应中使用裸露(直接使用数字)的状态码。 REST framework 包含一组命名常量,你可以使用它们使代码更加清晰易读。
下面列出了 模块中包含的全部 HTTP 状态码。
from rest_framework import status
from rest_framework.test import APITestCase
class ExampleTestCase(APITestCase):
def test_url_root(self):
url = reverse('index')
response = self.client.get(url)
self.assertTrue(status.is_success(response.status_code))
这类状态码表示临时响应。默认情况下,REST framework 中没有使用 1xx 状态码。
成功 - 2xx
这类状态码表明客户端的请求已被成功接收,理解和接受。
HTTP_200_OK
HTTP_201_CREATED
HTTP_203_NON_AUTHORITATIVE_INFORMATION
HTTP_204_NO_CONTENT
HTTP_205_RESET_CONTENT
HTTP_207_MULTI_STATUS
客户端错误 - 4xx
4xx 状态码适用于客户端出现错误的情况。除了响应 HEAD 请求之外,服务器应该包含一个错误情况说明的实体,以及它是临时的还是永久的。
HTTP_400_BAD_REQUEST
HTTP_401_UNAUTHORIZED
HTTP_402_PAYMENT_REQUIRED
HTTP_403_FORBIDDEN
HTTP_404_NOT_FOUND
HTTP_405_METHOD_NOT_ALLOWED
HTTP_406_NOT_ACCEPTABLE
HTTP_407_PROXY_AUTHENTICATION_REQUIRED
HTTP_408_REQUEST_TIMEOUT
HTTP_409_CONFLICT
HTTP_410_GONE
HTTP_412_PRECONDITION_FAILED
HTTP_414_REQUEST_URI_TOO_LONG
HTTP_415_UNSUPPORTED_MEDIA_TYPE
HTTP_416_REQUESTED_RANGE_NOT_SATISFIABLE
HTTP_417_EXPECTATION_FAILED
HTTP_422_UNPROCESSABLE_ENTITY
HTTP_423_LOCKED
HTTP_424_FAILED_DEPENDENCY
HTTP_428_PRECONDITION_REQUIRED
HTTP_429_TOO_MANY_REQUESTS
HTTP_431_REQUEST_HEADER_FIELDS_TOO_LARGE
HTTP_451_UNAVAILABLE_FOR_LEGAL_REASONS
5xx 表示服务器意识到其发生错误或无法执行请求的情况。除了响应 HEAD 请求之外,服务器应该包含一个错误情况说明的实体,以及它是临时的还是永久的。
帮助函数
is_informational() # 1xx
is_success() # 2xx
is_redirect() # 3xx
is_server_error() # 5xx