universal JSONResponse

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
from django.db.models import Model
from django.db.models.query import QuerySet
from django.http import HttpResponse
from django.utils.encoding import force_unicode
from django.utils.simplejson import dumps, JSONEncoder

def jsonify_model(model):
    model_dict = model.__dict__
    for key, value in model_dict.items():
        if key.startswith('_'):
            del model_dict[key]
        else:
            model_dict[key] = force_unicode(value)
    return model_dict

class API_JSONEncoder(JSONEncoder):
    def default(self, obj):
        if isinstance(obj, QuerySet):
            return [jsonify_model(o) for o in obj]
        if isinstance(obj, Model):
            return jsonify_model(obj)
        return JSONEncoder.default(self,obj)

class JSONResponse(HttpResponse):
    status_code = 200

    def __init__(self, data):
        json_response = dumps(data, ensure_ascii=False, indent=2, cls=API_JSONEncoder)
        HttpResponse.__init__(self, json_response, mimetype="text/javascript")

More like this

  1. Universal JsonResponse by pietras 3 years, 10 months ago
  2. JsonResponse by zakj 6 years, 1 month ago
  3. Validate request params without custom form by xiaoym 1 month ago
  4. Another JsonResponse by kcarnold 4 years, 11 months ago
  5. An alternative model serializer for django models by isaact 4 years, 6 months ago

Comments

(Forgotten your password?)