【问题标题】:range in jinja2 inside a for loopjinja2中for循环内的范围
【发布时间】:2013-07-15 12:53:02
【问题描述】:

我有一个嵌套列表。我需要遍历一个列表并将其保存在 for 循环中,如下所示。

{% for alpha in list %}
    <div id="{{ loop.index }}"> 
       <div class='sidebar-one'>
          {% for beta in list[0][2:] %} #I want to iterate through list[0][2:] till list[n][2:]
              <p> {{ beta[0][0] }} </p>
          {% endfor %}
       </div>
    </div>
{% endfor %}

我尝试了范围但没有运气。

{% for n in range(1,n) %}
{% for line in check[{{n}}][2:] %}
{% endfor %}

它抛出了错误:

    TemplateSyntaxError: expected token ':', got '}'

【问题讨论】:

    标签: python loops jinja2


    【解决方案1】:

    这就像 Python:

    {% for n in range(n) %}
        {% for line in check[n][2:] %}
            <p> {{ beta[0][0] }} </p>
        {% endfor %}
    {% endfor %}
    

    【讨论】:

    • 好的,我明白了。我的错误是将 n 放入 {{n}} 之类的大括号中。我仍然想知道为什么这里不使用大括号?我们在 jinja2 中,而不是在 python 中,对吧?
    • 如果您介意添加答案,请再询问。我如何结束第一个 for 循环和第二个循环? “endfor”会自动采用更近的for循环对吗?我想知道先结束外部 for 循环然后再结束内部循环是否有任何技巧!
    • @ChandanGupta:Jinja2 不是 Python,但它的语法非常相似。至于循环的事情,你会如何用普通的 Python 来做呢?
    • 谢谢! Jinja 和 Python 命令相似是非常有用的。
    • Jinja2 循环中允许哪些内置函数? (范围可用,但 afaik 例如 len 不可用)
    【解决方案2】:

    您可以使用“长度”属性:

    {% for n in range(yourList| length) %}
           <p class="someclass">{{n + 1}}.</p>
           <a class="someclass2" 
           href="{{ url_for( 'yourFunction', Int = yourList[n].iterable)}}">
           {{yourList[n].iterable}}</a><br>
    {% endfor %}
    

    长度类似于我们在 python 中的 len(yourlist)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-12
      • 1970-01-01
      • 2022-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-18
      相关资源
      最近更新 更多