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 语句中的元组值?
如果评估的变量为 False,为啥我的 django 模板中的这个 IF 语句会执行?