How to change status of JsonResponse in Django
My API is returning a JSON object on error but the status code is HTTP 200
:
response = JsonResponse({'status': 'false', 'message': message})
return response
How can I change the response code to indicate an error?
Solution 1:
JsonResponse
normally returns HTTP 200
, which is the status code for 'OK'
. In order to indicate an error, you can add an HTTP status code to JsonResponse
as it is a subclass of HttpResponse
:
response = JsonResponse({'status':'false','message':message}, status=500)
Solution 2:
Return an actual status
JsonResponse(status=404, data={'status':'false','message':message})
Solution 3:
Python built-in http library has new class called HTTPStatus which is come from Python 3.5 onward. You can use it when define a status
.
from http import HTTPStatus
response = JsonResponse({'status':'false','message':message}, status=HTTPStatus.INTERNAL_SERVER_ERROR)
The value of HTTPStatus.INTERNAL_SERVER_ERROR.value
is 500
. When someone read your code it's better define someting like HTTPStatus.<STATUS_NAME>
other than define an integer value like 500
. You can view all the IANA-registered status codes from python library here.