Django 模板中的错误:我可以在 if 语句中进行算术运算吗

Posted

技术标签:

【中文标题】Django 模板中的错误:我可以在 if 语句中进行算术运算吗【英文标题】:Error in the template with Django : can I make arithmetic in if statement 【发布时间】:2014-10-25 16:46:50 【问题描述】:

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

文件.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 %

输出我想要 => Bootstrap pagination

但是 Django 给了我一个错误: % if (forloop.counter % 10) == 0 % 模板语法错误:/

除了创建自己的过滤器或添加过滤器,我不知道该怎么做,但我想先知道我是否可以先在模板中做。

PS:我使用的是 Django 1.5,无法升级。

编辑:

最后我使用了这个条件:

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

就像我知道当我有 10 个倍数一样。

【问题讨论】:

使用分页器比自己发明***要容易得多,from django.core.paginator import Paginator ... 【参考方案1】:

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

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

【讨论】:

谢谢,我会那样看的。【参考方案2】:

使用分页器,您的 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>

【讨论】:

以上是关于Django 模板中的错误:我可以在 if 语句中进行算术运算吗的主要内容,如果未能解决你的问题,请参考以下文章

如何在 django 模板的 forloop 中访问 If 语句中的元组值?

django模板中的if语句不正确

Django模板if语句中的分组条件

如果评估的变量为 False,为啥我的 django 模板中的这个 IF 语句会执行?

我的 Django 模板中的“Else if”语句出现在 HTML 标头块之后

Django将多个参数传递给If语句中的自定义模板过滤器