Я пытаюсь использовать «JSONResponseMixin» из пакета Django-braces.Django Braces «JSONResponseMixin» показывает странное поведение
Mixin:
class JSONResponseMixin(object):
"""
A mixin that allows you to easily serialize simple data such as a dict or
Django models.
"""
content_type = u"application/json"
json_dumps_kwargs = None
def get_content_type(self):
if self.content_type is None:
raise ImproperlyConfigured(
u"%(cls)s is missing a content type. "
u"Define %(cls)s.content_type, or override "
u"%(cls)s.get_content_type()." % {
u"cls": self.__class__.__name__}
)
return self.content_type
def get_json_dumps_kwargs(self):
if self.json_dumps_kwargs is None:
self.json_dumps_kwargs = {}
self.json_dumps_kwargs.setdefault(u'ensure_ascii', False)
return self.json_dumps_kwargs
def render_json_response(self, context_dict, status=200):
"""
Limited serialization for shipping plain data. Do not use for models
or other complex or custom objects.
"""
json_context = json.dumps(context_dict, cls=DjangoJSONEncoder,
**self.get_json_dumps_kwargs())
return HttpResponse(json_context,
content_type=self.get_content_type(),
status=status)
def render_json_object_response(self, objects, **kwargs):
"""
Serializes objects using Django's builtin JSON serializer. Additional
kwargs can be used the same way for django.core.serializers.serialize.
"""
json_data = serializers.serialize(u"json", objects, **kwargs)
return HttpResponse(json_data, content_type=self.get_content_type())
я в основном наследуя это подмешать в моей собственной точки зрения, чтобы вернуть ответ JSON в Javascript функцию обратного вызова.
Вот мое мнение:
views.py
class PostDetail(JSONResponseMixin, DetailView):
model = Post
template_name = 'post_detail_page.html'
Так что это на самом деле очень простой вид ... но когда я открываю эту точку зрения, странная вещь происходит. На странице показан простой html-исходный код вместо рендеринга источника на html-страницу. Конечно, этого не происходит, как только я удаляю наследование JSONResponseMixin на мой взгляд. Я понятия не имею, почему это происходит, поскольку JSONResponseMixin не переопределяет метод «render_to_response» или что-то важное ...
Может кто-нибудь сказать мне, почему это происходит ..? Благодаря!!!
Btw, это результирующий HTML-страница:
<html>
<head>
<link title="Wrap Long Lines" href="resource://gre-resources/plaintext.css" type="text/css" rel="alternate stylesheet">
#HAVE NO IDEA WHERE THIS CAME FROM...
</head>
<body>
#ALL MY HTML SOURCE CODE APPEARS HERE WITHOUT BEING RENDERED!!!
</body>
</html>
тип содержимого для ответа является «применение/JSON» по умолчанию. Это не превратит ваш шаблон в HTML. –