使用Django的模板出错:我可以在if语句中进行算术运算

时间:2014-09-01 12:41:23

标签: python django twitter-bootstrap python-2.7 django-templates

我想对Bootstrap进行分页:数据中每10个新字段一个新页面。

file.html

{% for d in data %}
    {% if forloop.first %}
      <ul class="pagination">
    {% endif %}
    {% if (forloop.counter % 10) == 0 %}
        <li><a href="#{{ forloop.counter }}">{{ forloop.counter % 10 }}</a></li>
    {% endif %}
    {% if forloop.last %}
        </ul>
    {% endif %}
{% endfor %}

输出我想那个=&gt; Bootstrap pagination

但是Django给我一个错误:     {%if(forloop.counter%10)== 0%} TemplateSyntaxError:/

除了创建我自己的过滤器或添加过滤器之外,我不知道怎么办,但我想首先知道我是否可以先在模板中进行操作。

PS:我使用的是Django 1.5,我无法对其进行升级。

修改

最后我使用了这个条件:

{% if forloop.counter|divisibleby:'10' and forloop.counter|divisibleby:'5' and forloop.counter|divisibleby:'2' %}

就像我知道什么时候我有10倍。

2 个答案:

答案 0 :(得分:1)

模数(%)运算符在django模板中不可用。但是,您可以使用divisiblebyhttps://docs.djangoproject.com/en/1.5/ref/templates/builtins/#divisibleby)模板过滤器,例如

{% if forloop.counter|divisibleby:"2" %}

答案 1 :(得分:0)

使用paginator,您的QuerySet不会针对孔表进行评估,只是您构建页面所需的数量,它提供了可以在模板中使用的属性,如(page_range,next_page_number,has_next等) 这是BootStrap 2和django.core.paginator:

的代码
   <div class="pagination pagination-centered">
        <ul>
            {% if MYDATAENTIRES.has_previous %}
                <li>
                    <a href="?page={{ MYDATAENTIRES.previous_page_number }}">{% trans "Précédent" %}</a>
                </li>
            {% endif %}
            {% for i in MYDATAENTIRES.paginator.page_range %}
              <li {% ifequal MYDATAENTIRES.number i %} {{ 'class="disabled"' }} {% endifequal %}>
                  <a href="?page={{ i }}">
                    {{ i }}
                  </a>
              </li>     
            {% endfor %}
            {% if MYDATAENTIRES.has_next %}
                <li>
                    <a href="?page={{ MYDATAENTIRES.next_page_number }}">{% trans "Suivant" %}</a>
                </li>
            {% endif %}
        </ul>
    </div>