Creating a JSON response using Django and Python Creating a JSON response using Django and Python django django

Creating a JSON response using Django and Python


I usually use a dictionary, not a list to return JSON content.

import jsonfrom django.http import HttpResponseresponse_data = {}response_data['result'] = 'error'response_data['message'] = 'Some error message'

Pre-Django 1.7 you'd return it like this:

return HttpResponse(json.dumps(response_data), content_type="application/json")

For Django 1.7+, use JsonResponse as shown in this SO answer like so :

from django.http import JsonResponsereturn JsonResponse({'foo':'bar'})


New in django 1.7

you could use JsonResponse objects.

from the docs:

from django.http import JsonResponsereturn JsonResponse({'foo':'bar'})


I use this, it works fine.

from django.utils import simplejsonfrom django.http import HttpResponsedef some_view(request):    to_json = {        "key1": "value1",        "key2": "value2"    }    return HttpResponse(simplejson.dumps(to_json), mimetype='application/json')

Alternative:

from django.utils import simplejsonclass JsonResponse(HttpResponse):    """        JSON response    """    def __init__(self, content, mimetype='application/json', status=None, content_type=None):        super(JsonResponse, self).__init__(            content=simplejson.dumps(content),            mimetype=mimetype,            status=status,            content_type=content_type,        )

In Django 1.7 JsonResponse objects have been added to the Django framework itself which makes this task even easier:

from django.http import JsonResponsedef some_view(request):    return JsonResponse({"key": "value"})