我想创建以下表的json数据。该表有两个字段Name和ID。我想创建JSON数据=>
{"Instances": [{"Name": "test2", "ID":"7a3a2eab-7d3b-498b-bc69-ba39396ada4f"},{"Name": "test1", "ID":"1114cb76-f3df-4c60-8b12-5ad14224ffbd"}]}
Name ID
test2 7a3a2eab-7d3b-498b-bc69-ba39396ada4f
test1 1114cb76-f3df-4c60-8b12-5ad14224ffbd
ce-2 8b97b82b-a9e4-4fe0-adcb-eeaaac170301
ce-1 afaa50ad-8025-415b-81c4-566c8e06f388
我从api.nova.server_list(self.request)
获得上述数据。我尝试编写以下代码将数据转换为python+django中的json数据,但没有成功。
class InstanceList(django.views.generic.View):
def get(self, request, *args, **kwargs):
instances=api.nova.server_list(self.request)
def serializer(m):
ret= {}
ret['Name']= m.name
ret['Id']=m.id
context= {
'instances': [serializer(m) for m in instances],
}
return HttpResponse(json.dumps(context), content_type='application/json')
假设:
instances = api.nova.server_list(self.request)
返回instances
的列表,我不认为在get
函数中定义serializer
函数有什么意义。
使用实例简单创建字典,如下所示:
data_list = [{"Name" : instance.name, "ID" : instance.id} for instance in instances]
data = {"Instances" : data_list}
,然后简单地执行:
return HttpResponse(json.dumps(data), content_type = 'application/json')
我强烈建议你看看这些在Django中创建REST API的资源:
Django Rest Framework: http://www.django-rest-framework.org/Tastypie API: http://tastypieapi.org/
我个人已经成功地使用tastype创建了一个从模型返回JSON数据的REST API。这里有一个通往Tastypie文档的链接:https://django-tastypie.readthedocs.org/en/latest/