我有一个返回['a','b','c']的python列表,我想使用此列表通过Jinja2模板分别显示每个项目。
我尝试使用batch(1):
{% for resource in resourcelist|batch(1) %}
<file {{ resource }} >
{% endfor %}
但是,它仍然以列表形式返回答案:
文件['a','b', 'c']>
我使用过endif,但是无法运行代码。
具有Jinja2模板的xml文件是:
<resources>
<resource identifier="resource" type="webcontent" adlcp:scormtype="sco"
href="{{starting_resource}}">
{% for resource in resourcelist %}
<file {{ resource }} >
{% endfor %}
</resource>
我当前得到的输出是:
<resource identifier="resource" type="webcontent"
adlcp:scormtype="sco" href="df/res/test.hml">
<file df/res/test.hml >
<file ['a', 'b', 'c'] >
</resource>
python代码:
mylist = [index, all_resources]
output = template.render(starting_resource = index, resourcelist =
mylist)
我想要的输出是:
<resource identifier="resource" type="webcontent"
adlcp:scormtype="sco" href="df/res/test.hml">
<file df/res/test.hml >
<file ['a'] >
<file ['b'] >
<file ['c'] >
</resource>
建议,我是Jinja模板的新手。
我的目标是能够从目录中提取所有文件,并使用XML页面中的Jinja2模板列出它们。
答案 0 :(得分:1)
请考虑避免在Python中重复分配 index ,而在Jinja中只需两次引用 starting_resource 。下面还正确地使用了属性和结束标记来形成格式正确的XML输出。
Python 脚本(不需要mylist变量)
output = template.render(starting_resource = index, resourcelist = all_resources)
Jinja 模板
<resources>
<resource identifier="resource" type="webcontent" adlcp:scormtype="sco"
href="{{starting_resource}}">
<file href="{{starting_resource}}" />
{% for resource in resourcelist %}
<file href="{{resource}}" />
{% endfor %}
</resource>
</resources>