Creating a JSON response using Django and Python

后端 未结 15 2158
温柔的废话
温柔的废话 2020-11-22 06:02

I\'m trying to convert a server side Ajax response script into a Django HttpResponse, but apparently it\'s not working.

This is the server-side script:



        
相关标签:
15条回答
  • 2020-11-22 06:50

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

    import json
    
    from django.http import HttpResponse
    
    response_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 JsonResponse
    return JsonResponse({'foo':'bar'})
    
    0 讨论(0)
  • 2020-11-22 06:51

    I use this, it works fine.

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

    Alternative:

    from django.utils import simplejson
    
    class 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 JsonResponse
    def some_view(request):
        return JsonResponse({"key": "value"})
    
    0 讨论(0)
  • 2020-11-22 06:51

    Use JsonResponse

    from django.http import JsonResponse
    
    0 讨论(0)
提交回复
热议问题