2015-08-04 4 views
0

Я хочу создать данные json из следующей таблицы. В этой таблице есть два имени поля и идентификатор. Я хочу создать данные в формате JSON, как =>Django: Создайте JSON для Rest-API

{"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). Я попытался написать следующий код для преобразования данных в json-данные в python + django, но не удалось.

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') 

ответ

1

Предполагая, что:

instances = api.nova.server_list(self.request) 

список возвращается из instances, я не вижу точку определения serializer функции внутри функции get.

С экземплярами просто создать словарь следующим образом:

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') 
1

я настоятельно рекомендую вам взглянуть на эти ресурсы для создания REST API в Django :

Джанго Rest Framework: http://www.django-rest-framework.org/

Tastypie API: http://tastypieapi.org/

Я лично использовал Tastypie для создания REST API, возвращающего данные JSON с моделей. Для начала обратитесь к документации Tastypie: https://django-tastypie.readthedocs.org/en/latest/