from django.http import HttpResponse from django.utils.functional import Promise from django.utils.translation import force_unicode from django.utils.simplejson import JSONEncoder class LazyJSONEncoder(JSONEncoder): def default(self, o): if isinstance(o, Promise): return force_unicode(o) else: return super(LazyJSONEncoder, self).default(o) class JsonResponse(HttpResponse): def __init__(self, data, mimetype='application/json'): json_data = LazyJSONEncoder().encode(data) super(JsonResponse, self).__init__( content=json_data, mimetype=mimetype)