我有一个从API调用返回的XML块。
它包含许多结果 - 如下所示的人物元素。
<root><person><name>mark</name><age>18</age></person><person><name>alan</name><age>10</age></person></root>
我想将这个数据结构(或者一些可迭代的版本)传递给django模板进行迭代。
在我的模板中,我想说
{% for r in results %}
{{ r.name }}
{{ r.age }}
{% endfor %}
我认为这本来是直截了当的,但它的构成问题。
答案 0 :(得分:1)
Django模板无法开箱即用。它实际上听起来并不正确 - 将XML结构传递给HTML模板进行处理。
制作有助于迭代XML结构的自定义模板标签或过滤器可能是一种可能的解决方案,但在这种情况下,您可能会发现自己过于复杂,模板层用于演示,don't put too much logic into it:
我们将模板系统视为控制演示文稿的工具 与表现相关的逻辑 - 就是这样。模板系统 不应该支持超出这个基本目标的功能。
在视图中解析XML,制作字典列表并将其传递给上下文中的模板。
例如,使用xmltodict
工具:
persons = xmltodict.parse(data)['root']['person']
其中data
是您的XML结构。