programing

장고에서 Json Response의 상태를 변경하는 방법.

muds 2023. 5. 26. 22:51
반응형

장고에서 Json Response의 상태를 변경하는 방법.

내 API가 오류로 JSON 개체를 반환하고 있지만 상태 코드는HTTP 200:

response = JsonResponse({'status': 'false', 'message': message})
return response

오류를 나타내도록 응답 코드를 변경하려면 어떻게 해야 합니까?

JsonResponse정상적으로 돌아오다.HTTP 200상태 코드는 다음과 같습니다.'OK'오류를 나타내기 위해 HTTP 상태 코드를 다음에 추가할 수 있습니다.JsonResponse의 하위 분류이기 때문에HttpResponse:

response = JsonResponse({'status':'false','message':message}, status=500)

실제 상태 반환

JsonResponse(status=404, data={'status':'false','message':message})

Python 내장 http 라이브러리에는 Python 3.5 이후 버전에서 제공되는 HTTPSatus라는 새 클래스가 있습니다.다음을 정의할 때 사용할 수 있습니다.status.

from http import HTTPStatus
response = JsonResponse({'status':'false','message':message}, status=HTTPStatus.INTERNAL_SERVER_ERROR)

의 가치HTTPStatus.INTERNAL_SERVER_ERROR.value이라500누군가가 당신의 코드를 읽을 때, 그것은 다음과 같은 것을 정의하는 것이 더 낫습니다.HTTPStatus.<STATUS_NAME>다음과 같은 정수 값을 정의하는 것 외에500여기에서 파이썬 라이브러리에서 IANA에 등록된 모든 상태 코드를 볼 수 있습니다.

상태 코드를 변경하려면 다음과 같이 하십시오.JsonResponse이렇게 할 수 있습니다.

response = JsonResponse({'status':'false','message':message})
response.status_code = 500
return response

Sayse의 이 대답은 효과가 있지만 문서화되지 않았습니다.소스를 보면 나머지 소스를 통과합니다.**kwargs슈퍼클래스 생성자인 HttpStatus로 전송됩니다.그러나 문서 문자열에서 그들은 그것을 언급하지 않습니다.키워드 인수가 슈퍼클래스 컨스트럭터로 넘어간다고 가정하는 게 관례인지 모르겠습니다.

다음과 같이 사용할 수도 있습니다.

JsonResponse({"error": "not found"}, status=404)

포장지를 만들었습니다.

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)

언급URL : https://stackoverflow.com/questions/35059916/how-to-change-status-of-jsonresponse-in-django

반응형