from django.http.response import JsonResponse
class JsonResponseWithStatus(JsonResponse):
"""
A JSON response object with the status as the second argument.
JsonResponse passes remaining keyword arguments to the constructor of the superclass,
HttpResponse. It isn't in the docstring but can be seen by looking at the Django
source.
"""
def __init__(self, data, status=None, encoder=DjangoJSONEncoder,
safe=True, json_dumps_params=None, **kwargs):
super().__init__(data, encoder, safe, json_dumps_params, status=status, **kwargs)
5条答案
按热度按时间2w3rbyxf1#
JsonResponse
通常返回HTTP 200
,这是'OK'
的状态代码。为了指示错误,您可以向JsonResponse
添加HTTP状态码,因为它是HttpResponse
的子类:qybjjes12#
返回实际状态
hgb9j2n63#
Python内置的http库有一个名为HTTPStatus的新类,它来自Python 3.5。您可以在定义
status
时使用它。HTTPStatus.INTERNAL_SERVER_ERROR.value
的值是500
。当有人读你的代码时,最好定义一些像HTTPStatus.<STATUS_NAME>
这样的值,而不是定义一个像500
这样的整数值。你可以在这里查看python库中的所有IANA-registered状态码。ni65a41a4#
要在
JsonResponse
中更改状态代码,可以执行以下操作:mutmk8jj5#
这个答案来自Sayse工程,但它的文档。如果查看源代码,您会发现它将剩余的
**kwargs
传递给超类构造函数HttpStatus。然而,在文档字符串中,他们没有提到这一点。我不知道这是否是假定关键字args将被传递给超类构造函数的约定。你也可以这样使用它:
我做了一个 Package :