我想为 HttpResponse 生成 JSON 类型对象,为了构建它,我使用嵌套的“for”结构。我写下了一些代码,用我的python解释器尝试过,但是当我在django视图中使用它时,它拒绝正常工作。
我的结构是这样的:
tarifas = ['2.0A','2.0DHA','2.0DHSA']
terminos = ['Dia','Hora','GEN','NOC','VHC','COFGEN','COFNOC','COFVHC','PMHGEN','PMHNOC','PMHVHC','SAHGEN','SAHNOC','SAHVHC','FOMGEN','FOMNOC','FOMVHC','FOSGEN','FOSNOC','FOSVHC','INTGEN','INTNOC','INTVHC','PCAPGEN','PCAPNOC','PCAPVHC','TEUGEN','TEUNOC','TEUVHC']
data_json = {}
data_json['datos_TOT'] = []
data_json['datos_TEU'] = []
data_json['fecha'] = fecha
for i in range(3):
data_json['datos_TOT'].append({})
data_json['datos_TEU'].append({})
data_json['datos_TOT'][i]['tarifa'] = tarifas[i]
data_json['datos_TEU'][i]['tarifa'] = tarifas[i]
for j in range(0,24):
data_json['datos_TEU'][i]['values'] = []
data_json['datos_TEU'][i]['values'].append({})
data_json['datos_TEU'][i]['values'][j]['periodo'] = "{0}-{1}".format(j,j+1)
return HttpResponse(json.dumps(data_json), content_type="application/json")
事实上,它有一个更深层次但是第二个不起作用我没有把它放在这里。
使用这个嵌套结构,我期望一个JSON对象在第一级具有(b-a)条目,每个条目包含(d-c)个条目。但我看到的是第二个循环只返回最后一个值!因此,如果“j”循环从0到24,它将只返回“23”而已。好像它只是一个“圈”。
视图中的嵌套循环是否有限制?如果有,我可以在哪里放置它们?我试图让models.py摆脱逻辑。
答案 0 :(得分:0)
您的问题是您在data_json['datos_TEU'][i]['values']
循环的每次迭代开始时将j
重置为空列表,因此它只会有一个元素。将该行移动到嵌套循环之前。
请注意,您的代码可以用Python编写得更多:
for tarifa in tarifas:
tot = {'tarifa': tarifa}
data_json['datos_TOT'].append(tot)
teu = {'tarifa': tarifa}
values = []
for j, termino in enumerate(terminos):
value = {'termino': termino, 'periodo': "{0}-{1}".format(j,j+1)}
values.append(value)
teu['values'] = values
data_json['datos_TEU'].append(teu)