Django (1.8) JSONView
# -*- coding: utf-8 -*-
from django.core import serializers
from django.http import HttpResponse
from django.http import JsonResponse
from django.db.models.query import QuerySet
from django.views.generic.base import TemplateView
from django.views.generic.detail import BaseDetailView
class JSONResponseMixin(object):
def render_to_json_response(self, context, **response_kwargs):
return JsonResponse(
self.convert_data(context),
safe=False,
**response_kwargs
)
def convert_data(self, context):
if isinstance(context, QuerySet):
return serializers.serialize("python", context, ensure_ascii=False)
else:
return context
class JSONView(JSONResponseMixin, TemplateView):
def render_to_response(self, context, **response_kwargs):
return self.render_to_json_response(context, **response_kwargs)
class JSONDetailView(JSONResponseMixin, BaseDetailView):
def render_to_response(self, context, **response_kwargs):
return self.render_to_json_response(context, **response_kwargs)