在Django模板中迭代XML

时间:2014-05-02 13:46:00

标签: python html xml django django-templates

我有一个从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 %}

我认为这本来是直截了当的,但它的构成问题。

1 个答案:

答案 0 :(得分:1)

Django模板无法开箱即用。它实际上听起来并不正确 - 将XML结构传递给HTML模板进行处理。

制作有助于迭代XML结构的自定义模板标签或过滤器可能是一种可能的解决方案,但在这种情况下,您可能会发现自己过于复杂,模板层用于演示,don't put too much logic into it

  

我们将模板系统视为控制演示文稿的工具   与表现相关的逻辑 - 就是这样。模板系统   不应该支持超出这个基本目标的功能。

在视图中解析XML,制作字典列表并将其传递给上下文中的模板。

例如,使用xmltodict工具:

persons = xmltodict.parse(data)['root']['person']

其中data是您的XML结构。