我正在尝试使用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))
答案 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文档。