我想使用Django模板引擎来构建一些文本文件:
我写了这个剧本:
from django.template import Template, Context
from django.conf import settings
settings.configure()
with open('etchosts') as fh:
t = Template(fh.read().strip())
c = Context({'hosts': ['host A','host B', 'host C']})
print t.render(c)
模板文件“etchosts”:
=================================
{% for h in hosts %} - {{ h }}
{% endfor %}
=================================
如果我运行脚本,我得到了:
=================================
- host A
- host B
- host C
<----- unwanted newline
=================================
如您所见,循环结束时有一个不需要的换行符
如何更改我的模板:
=================================
- host A
- host B
- host C
=================================
答案 0 :(得分:2)
您可以使用{% if forloop.last %}
检查您是否在最后一次迭代中。请参阅the docs for for
。
答案 1 :(得分:2)
在for循环中,存在名为forloop
的额外对象。这包含有关循环的一些信息。请参阅this documentation page。
在您的情况下,代码将是这样的:
=================================
{% for h in hosts %} - {{ h }}{% if not forloop.last %}
{% endif %}{%endfor %}
=================================
问题是,上述清洁剂是您当前的解决方案吗?我个人认为上面解决方案中的额外代码会让事情变得混乱,但这只是个人偏好。但是,它是一个有效的替代方案(作为奖励,现在你知道了forloop对象)。
答案 2 :(得分:0)
=================================
{% for h in hosts %} - {{ h }}
{% endfor %}=================================
答案是否存在,但有更好的东西吗?