我正在尝试检查Jinja模板中的一个简单条件,以便在网页中循环,无论数字是否可被3整除。 我已经提到了以下链接 http://jinja.pocoo.org/docs/dev/templates/ (注意loop.index不适用于我forloop.counter)
代码是
{% extends "header.html" %}
{% block content %}
<h1>List of all Reference Ids</h1>
<table class="table table-striped">
{% for master in object_list %}
{% if forloop.counter divisibleby 3 %}
Do something
{%endif%}
<td> <a href="/data/{{ master.id }}"> {{ master.reference_id }} </a></td>
{% endfor %}
</table>
{% endblock %}
尝试了各种组合,例如下面的
{% if forloop.counter divisibleby 3 %}
{%endif%}
{% if forloop.counter divisibleby(3 %}
{%endif%}
{% if divisibleby(forloop.counter,3) %}
{%endif%}
{% if divisibleby forloop.counter 3 %}
{%endif%}
{% if forloop.counter%3==0 %}
{%endif%}
但没有任何作用。我不知道我在哪里弄错了。请帮助我解决这个问题的人很长时间。
答案 0 :(得分:4)
template_string = """
{% for i in [1,2,3,4,5,6,7] %}
{% if loop.index %3 == 0%}3{%else%}0{%endif%}\n
{% endfor %}
"""
from jinja2 import Template
print Template(template_string).render()
虽然听起来像是在使用django模板而不是jinja ......
如果这是DjangoTemplateLanguage那么
{% if forloop.counter0|divisibleby:3 %}
应该工作(我认为...)所以这里完全是djangoTemplate equivelent可以独立运行
from django.template import Template, Context
from django.template.engine import Engine
from django.conf import settings
settings.configure(DEBUG=False)
template_string = """
{% for i in the_list %}
{% if forloop.counter|divisibleby:3 %}3{%else%}0{%endif%}\n
{% endfor %}
"""
print Template(template_string).render(Context({"the_list":[1,2,3,4,5,6,7]}))