Django 模板 - 遍历范围
意图
在我的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这些函数。
失败的尝试
一开始,我考虑创建一个模板标签,返回字母和数字的列表,然后在模板中循环使用这个列表,但这样不行,因为这是一个标签,而不是上下文变量。
模板标签:
@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
标签,结果也不行。
进一步思考
- 我不能在视图中设置上下文,因为这是一个我扩展的基础模板。
- 我不想添加上下文处理器,因为我只在一个模板中使用这个范围。
有没有办法把模板标签的输出变成一个可以循环的上下文变量?或者我应该用其他方法来解决这个问题?