状态码

    不建议在你的响应中使用裸露(直接使用数字)的状态码。 REST framework 包含一组命名常量,你可以使用它们使代码更加清晰易读。

    下面列出了 模块中包含的全部 HTTP 状态码。

    1. from rest_framework import status
    2. from rest_framework.test import APITestCase
    3. class ExampleTestCase(APITestCase):
    4. def test_url_root(self):
    5. url = reverse('index')
    6. response = self.client.get(url)
    7. self.assertTrue(status.is_success(response.status_code))

    这类状态码表示临时响应。默认情况下,REST framework 中没有使用 1xx 状态码。

    成功 - 2xx

    这类状态码表明客户端的请求已被成功接收,理解和接受。

    1. HTTP_200_OK
    2. HTTP_201_CREATED
    3. HTTP_203_NON_AUTHORITATIVE_INFORMATION
    4. HTTP_204_NO_CONTENT
    5. HTTP_205_RESET_CONTENT
    6. HTTP_207_MULTI_STATUS

    客户端错误 - 4xx

    4xx 状态码适用于客户端出现错误的情况。除了响应 HEAD 请求之外,服务器应该包含一个错误情况说明的实体,以及它是临时的还是永久的。

    1. HTTP_400_BAD_REQUEST
    2. HTTP_401_UNAUTHORIZED
    3. HTTP_402_PAYMENT_REQUIRED
    4. HTTP_403_FORBIDDEN
    5. HTTP_404_NOT_FOUND
    6. HTTP_405_METHOD_NOT_ALLOWED
    7. HTTP_406_NOT_ACCEPTABLE
    8. HTTP_407_PROXY_AUTHENTICATION_REQUIRED
    9. HTTP_408_REQUEST_TIMEOUT
    10. HTTP_409_CONFLICT
    11. HTTP_410_GONE
    12. HTTP_412_PRECONDITION_FAILED
    13. HTTP_414_REQUEST_URI_TOO_LONG
    14. HTTP_415_UNSUPPORTED_MEDIA_TYPE
    15. HTTP_416_REQUESTED_RANGE_NOT_SATISFIABLE
    16. HTTP_417_EXPECTATION_FAILED
    17. HTTP_422_UNPROCESSABLE_ENTITY
    18. HTTP_423_LOCKED
    19. HTTP_424_FAILED_DEPENDENCY
    20. HTTP_428_PRECONDITION_REQUIRED
    21. HTTP_429_TOO_MANY_REQUESTS
    22. HTTP_431_REQUEST_HEADER_FIELDS_TOO_LARGE
    23. HTTP_451_UNAVAILABLE_FOR_LEGAL_REASONS

    5xx 表示服务器意识到其发生错误或无法执行请求的情况。除了响应 HEAD 请求之外,服务器应该包含一个错误情况说明的实体,以及它是临时的还是永久的。

    帮助函数

    1. is_informational() # 1xx
    2. is_success() # 2xx
    3. is_redirect() # 3xx
    4. is_server_error() # 5xx