如何在Jinja模板(Django Framework)中检查一个数字是否可以被另一个整除

时间:2016-03-23 17:50:44

标签: python django django-templates

我正在尝试检查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%}

但没有任何作用。我不知道我在哪里弄错了。请帮助我解决这个问题的人很长时间。

1 个答案:

答案 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]}))