使用JSONRESPONSE返回对象

时间:2018-07-09 08:08:18

标签: django

我正在尝试使用Jsonresponse返回对象,对不起,我是newb 这是我的脚本:

setInterval(function()
    {
        $.ajax({
            url: '/check_notification/',
            type: "POST",
            dataType: 'json',
            success: function (data) {}
        });
    }, 2000);

在我的django views.py中:

def check_notification(request):
    user = request.user
    profile = Person.objects.get(profile=user)
    notification = NotificationRecipient.objects.filter(profile=profile)
    return JsonResponse(model_to_dict(notification))

2 个答案:

答案 0 :(得分:0)

您可以为要作为响应传递的模型制作模型序列化器。有关更多信息,请阅读有关序列化程序的django rest框架tutorial,了解如何进行json响应。或者,如果您有简单的字典,则可以在check_notification函数的末尾使用此代码段进行json响应。 return HttpResponse(json.dumps(your dictionary))

答案 1 :(得分:0)

我建议您使用Django Rest框架以JSON格式返回响应,因为可以轻松实现模型的序列化。您可以从here开始。在这里,您会发现称为ModelSerializer的东西。基本上,您在应用文件夹中创建一个serializer.py,其中包含以下内容:

from rest_framework import serializers
from .models import Person, NotificationRecipient


class PersonSerializers(serializers.ModelSerializer):
    class Meta:
        model = Person
        fields = '__all__'



class NotificationRecipientSerializers(serializers.ModelSerializer):
        class Meta:
            model = NotificationRecipient
            fields = '__all__'

以上代码将序列化您的模型,这意味着将转换为json格式。 与在名为views_api.py的文件中相比,您可以创建一个类,该类将由URL调用并定义查询集。在您的情况下,该类将定义为:

from rest_framework.views import APIView
from rest_framework.response import Response
from .models import Person, NotificationRecipient
from .serializers import NotificationRecipientSerializers

class NotificationAPIView(APIView): 

    def get(self,request):
            user = request.user
            profile = Person.objects.get(profile=user)
            notification = NotificationRecipient.objects.filter(profile=profile)
            return Response(notification)

这将以JSON格式返回响应。在您的urls.py文件中,按如下所示调用NotificationAPIView:

从django.urls导入路径    来自.import views_api

urlpatterns = [
    path('check/notification/', views_api.NotificationAPIView.as_view(), name='notification'),

   ]

希望您对那里发生的事情有基本的了解。为了更好地理解,请阅读Django Rest Framework文档。