Django模板遍历上下文传递的items无内容显示问题求助
问题排查与解决方案
核心问题原因
- 你当前遍历的
api_reply是接口返回的完整JSON结构,其顶级键只有error和result两个,实际要展示的币种、余额数据都存在api_reply['result']字段中,直接遍历顶级结构自然不会输出你想要的表格内容。 - 额外排查点:如果接口返回的
api_reply是JSON字符串而非Python字典,调用.items()方法会无效,Django模板不会报错但也不会输出内容。
修复步骤
1. 代码调整(两种方案二选一即可)
方案1:调整视图层传输的数据(推荐,性能更优)
视图层直接将result字段的内容传给模板,提前过滤无用数据:
def kraken(request): """ A view to return kraken page """ # 若api_reply是接口返回的JSON字符串,需先转成Python字典: # import json # api_reply = json.loads(接口返回的JSON字符串) context = { 'coin_data': api_reply['result'], } return render(request, 'home/kraken.html', context)
模板对应调整遍历对象:
{% for k, v in coin_data.items %} <tr> <td>{{ k }}</td> <td>{{ v }}</td> </tr> {% endfor %}
方案2:仅调整模板遍历层级
不需要修改视图代码,直接在模板中指定遍历result字段即可:
{% for k, v in api_reply.result.items %} <tr> <td>{{ k }}</td> <td>{{ v }}</td> </tr> {% endfor %}
2. 校验步骤
如果调整后仍无内容输出,在视图层加打印代码确认数据状态:
# 加在context赋值之前即可 print(type(api_reply)) # 确认输出为<class 'dict'>,若为str则说明没有转JSON print(api_reply.keys()) # 确认输出包含'result'键 print(api_reply['result']) # 确认输出为你需要的币种、余额对应字典
内容的提问来源于stack exchange,提问作者Jack_T
相关产品推荐
相关产品推荐

