在我的Django模板中,我为字母表中的每个字母创建一个链接,每个数字1-9链接到索引页面。
在Python代码中,这就是它的样子:
for ch in map(chr, range(97, 123)) + range(1,10):
print '<a href="/indexpage/{0}/">{0}</a>'.format(ch)
但是我想在Django模板中这样做,所以我不能直接使用map / range函数。
首先,我考虑创建一个返回字母数字字符列表的模板标记,然后在模板中循环它,但这不起作用,因为它是标记而不是上下文变量。
Templatetag:
@register.simple_tag
def alnumrange():
return map(chr, range(97, 123)) + range(1,10)
模板:
{% for ch in alnumrange %}
<a href="/indexpage/{{ch}}/">{{ch}}</a>
{% endfor %}
我认为在使用with
标记时可能会有效,但它也没有。
有没有办法将模板标签输出转换为我可以迭代的上下文变量?或者我还有另一种解决方法吗?
答案 0 :(得分:3)
查看此模板标记:Template range tag。您应该能够扩展它以处理字符。
答案 1 :(得分:2)
您需要inclusion tag。只需在上下文中传递您的范围并根据需要进行渲染。它为您提供灵活的模块化结构。
答案 2 :(得分:0)
您可以将 模板 作为流程循环,它会执行该任务 100 次..
{% for item in "x"|ljust:"100" %}
{{item}}
{% endfor %}
或作为 int,您可以:
{% for item in "x"|ljust:100 %}
{{item}}
{% endfor %}