带有上下文变量的Django模板中的循环数字

时间:2015-03-20 17:26:28

标签: django templates for-loop

我想在Django模板中做一个Numeric for Loop。经过一番搜索,我发现了一个非常好的片段: https://djangosnippets.org/snippets/779/

有了它,我可以做到

Syntax:
{% num_range 5 as some_range %}

{% for i in some_range %}
  {{ i }}: Something I want to repeat\n
{% endfor %}

Produces:
0: Something I want to repeat 
1: Something I want to repeat 
2: Something I want to repeat 
3: Something I want to repeat 
4: Something I want to repeat

但是,似乎我只能在{%num_range%}标签上使用一个数字(例如,这里是5)。

问题在于我在' 5'的位置使用了一个上下文变量。假设我有一个上下文{{times}},这是一个整数变量。我怎么能这样做:

{% num_range times as some_range %}

然后使用' some_range'在{%for%}代码?

1 个答案:

答案 0 :(得分:0)

我没有测试过这个,但我认为它应该可行。请尝试在代码段中的RangeNode类下替换此内容:

def render(self, context):
    context[self.context_name] = range(int(self.num))
    return ""

有了这个

def render(self, context):
    try:
        num = int(self.num)
    except ValueError:
        num = int(context[self.num])
    context[self.context_name] = range(num)
    return ""