我有以下用于拨打Ajax
电话的功能:
30 import json
31
32 def get_info(request):
33 run = Run.objects.values('nvp_build', 'lports', 'lswitch_stt')
34 measurements = Measurements.objects.values('maxfield')
35 apistats = APIStats.objects.values('num')
36 clusterdata = ClusterData.objects.values('memory_usage')
37
38 response_data = json.dumps(run)
39 return HttpResponse(response_data, mimetype='application/json')
所以当我在views.py
中调用该方法时,我得到:
[{'lports': 4056, 'nvp_build': u'31559', 'lswitch_stt': 2000},
{'lports': 102, 'nvp_build': u'30194', 'lswitch_stt': 40},
{'lports': 4056, 'nvp_build': u'31299', 'lswitch_stt': 2000},
{'lports': 4056, 'nvp_build': u'31350', 'lswitch_stt': 2000},
{'lports': 4056, 'nvp_build': u'31481', 'lswitch_stt': 2000},
{'lports': 4056, 'nvp_build': u'31489', 'lswitch_stt': 2000},
{'lports': 4056, 'nvp_build': u'31494', 'lswitch_stt': 2000},
{'lports': 4056, 'nvp_build': u'31559', 'lswitch_stt': 2000}]
is not JSON serializable
然而,当我手动运行它,并利用上面的数组并执行json.dumps()
时,它可以工作......
任何线索?
答案 0 :(得分:3)
使用django的内置serializers:
from django.core import serializers
from django.http import HttpResponse
def get_info(request):
data = serializers.serialize('json',
Run.objects.all(),
fields=('nvp_build', 'lports', 'lswitch_stt'))
return HttpResponse(data, content_type='application/json')
希望有所帮助。