Django 1.7でhttp.JSONResponse
オブジェクトをJSONをクライアントに送信します。私の見解は:
#Ajax
def get_chat(request):
usuario = request.GET.get('usuario_consultor', None)
usuario_chat = request.GET.get('usuario_chat', None)
mensajes = list(MensajeDirecto.objects.filter(Q(usuario_remitente = usuario, usuario_destinatario = usuario_chat) | Q(usuario_remitente = usuario_chat, usuario_destinatario = usuario)))
return JsonResponse(mensajes, safe=False)
しかし、次のエラーが表示されます。
<MensajeDirecto:Towi CrisTowi>はJSONシリアル化できません `
QuerySetをシリアル化してJSON形式で送信する方法を知っていますか?
from Django.core import serializers
from Django.http import JsonResponse
def get_chat(request):
usuario = request.GET.get('usuario_consultor', None)
usuario_chat = request.GET.get('usuario_chat', None)
mensajes = MensajeDirecto.objects.filter(Q(usuario_remitente = usuario, usuario_destinatario = usuario_chat) | Q(usuario_remitente = usuario_chat, usuario_destinatario = usuario))
return JsonResponse(serializers.serialize('json', mensajes), safe=False)
参照: https://docs.djangoproject.com/en/dev/ref/request-response/#jsonresponse-objectshttps://docs.djangoproject.com/en/1.7/topics/serialization /
JsonResponse
で再シリアル化しないでください。以下を使用して、正しくフォーマットされたJSON応答を取得します。
from Django.core import serializers
from Django.http import HttpResponse
def my_view(request):
my_model = MyModel.objects.all()
response = serializers.serialize("json", my_model)
return HttpResponse(response, content_type='application/json')
JsonResponse
を使用すると、既にシリアル化されたJSONが文字列に強制されますが、これはおそらく望んでいないことです。
注:Django 1.1で動作します