使用 For 循环的 Django Python 模板嵌套列表
Posted
技术标签:
【中文标题】使用 For 循环的 Django Python 模板嵌套列表【英文标题】:Django Python Template Nested List using For Loop 【发布时间】:2020-05-27 12:21:11 【问题描述】:我对 python 编程真的很陌生。请帮助我如何在我的模板中显示以下结果:
我希望在我的 Django 模板中获得的结果是以下表格视图中的示例:
Up Devices Down Devices
Server-01 Server-02
Server-03
Total 2 Total 1
我正在使用 API 连接到服务器。以下是通过 GET 获取 API 结果的示例:
"treesize": 10,
"devices": [
"objid": 3222,
"objid_raw": 3222,
"device": "Server-01",
"status": "Up",
,
"objid": 3291,
"objid_raw": 3291,
"device": "Server-02",
"status": "Down",
,
"objid": 3357,
"objid_raw": 3357,
"device": "Server-03",
"status": "Up",
,
]
这是我的意见.py。如果这是获取我想要的信息的最佳方式,请纠正我。
response = requests.get('sample_api_url')
data = response.json()
up_devices = dict()
for device in data['devices']:
if device['status'] == "Up":
device_info =
"objid" : device['objid'],
"device" : device['device'],
"status" : device['status'],
objid = device['objid']
up_devices[objid] = device_info
else:
device_info =
"objid" : device['objid'],
"device" : device['device'],
"status" : device['status'],
objid = device['objid']
down_devices[objid] = device_info
context =
'treesize': data['treesize'],
"up_devices": up_devices,
return render(request, 'monitoring/dashboard.html', context)
我的列表结果是
3222: 'objid': 3222, 'device': 'Server-01', 'status': 'Up',
3291: 'objid': 3291, 'device': 'Server-02', 'status': 'Up',
3357: 'objid': 3357, 'device': 'Server-03', 'status': 'Up',
但是,我不知道如何在我的模板中解析它,我只能得到键而不是值。示例:
<table>
% for key in up_devices %
<tr>
<td> up_devices </td>
<td> up_devices.key.device </td>
</tr>
% endfor %
</table>
【问题讨论】:
【参考方案1】:尝试使用 dictionary.items():
<table>
% for key, value in up_devices.items %
<tr>
<td> value.device </td>
</tr>
% endfor %
</table>
这应该会给你设备价值。
我不确定您到底想在视图文件中完成什么,但是您可以通过将所有内容移出 if, else
子句来减少很多重复,除了更改的分配,即.
for device in data['devices']:
device_info =
"objid" : device['objid'],
"device" : device['device'],
"status" : device['status'],
objid = device['objid']
if device['status'] == "Up":
up_devices[objid] = device_info
else:
down_devices[objid] = device_info
【讨论】:
【参考方案2】:up_devices
是字典,而不是列表。您可以使用字典对象上的items
方法同时访问字典键和值。
<table>
% for key, value in up_devices.items %
<tr>
<td> key </td>
<td> value.device </td>
</tr>
% endfor %
</table>
【讨论】:
以上是关于使用 For 循环的 Django Python 模板嵌套列表的主要内容,如果未能解决你的问题,请参考以下文章
无法在 Django 模板文件的 for 循环中使用条件标签
Python Django - 模型:查询/过滤器中的 for 循环
如何优化 FOR 循环下存在的数据库调用(平台:Django、Python、Postgres)[重复]