如何将查询集结果的字典传递给$ .json?

时间:2017-07-31 06:58:42

标签: jquery json django django-queryset

目前我有以下查询集过滤器:

def grab_city_landmark(request):
    State = State.objects.filter(state=state_name)
    City = list(State.valued_list('city', flat=True).distinct())
    Landmark = list(State.valued_list('landmark', flat=True).distinct())

    response = {
         'state': State,
         'city': City,
         'landmark': Landmark,
     }
     return HttpResponse(response, content_type="application/javascript")

JQuery调用是:

 $(document).ready(function() {
      $.getJSON('grab_city_landmark/', {state_name: state}, function(data) {

      ... GRAB DATA HERE ...

      iterate over i
      data['city'][i]

我的问题是:

  1. 如何以json格式进行回复?它是以json形式吗?我该如何检查?我看不到对象返回jquery。 json.dumps(响应)似乎不起作用。

  2. 如何看一下java控制台返回给jquery的内容?

2 个答案:

答案 0 :(得分:1)

您可以尝试使用Django serializationDRF serializers,第二种方式可以帮助您创建rest api。例如:

from django.core import serializers

state = State.objects.filter(state=state_name)
state_data = serializers.serialize("json", state)
city_data = serializers.serialize(
            "json",
            state.distinct('city').order_by(), fields=('city')
            )

答案 1 :(得分:1)

import json

response  = json.dumps(list(State),City,Landmark)
return HttpResponse(response, content_type="application/javascript")

或使用django的jsonresponse

from django.http import JsonResponse
response = JsonResponse({'state': list(State),'city': City,'landmark': Landmark,})