我的模板中有一个用于分页的表格设置,在左下角显示了显示的项目数量,如下所示:
此处10
称为count
,19
称为total
。
如果我转到下一页(截至目前我的表格中只有2页数据),则会显示Showing 9 of 19 items
。
我想稍微修改一下,将其显示为Showing 1 - 10 of 19
,然后Showing 11 - 19 of 19
。看起来算法非常简单。我所要做的就是初始化变量start = 1
,将信息打印为Showing {{start}} - {{count}} of {{total}}
。然后,当我转到下一页start = count +1
和count += count
时。但是我不知道如何在django template
中执行此操作。我尝试使用with tag
作为{%with start = 1%},但它给了我一个错误'with' expected at least one variable assignment
这就是所有魔法发生的地方:
{% if table.page %}
{% with table.page.paginator.count as total %}
{% with table.page.object_list|length as count %}
{% with start = 1 %}
{% block pagination %}
<ul class="pagination">
{% block pagination.cardinality %}
<li class="cardinality">
{% if total != count %}
{% blocktrans %}
Showing {{ count }} of {{ total }}
{% endblocktrans %}
{% else %}
{{ total }}
{% endif %}
{% if total == 1 %}
{{ table.data.verbose_name }}
{% else %}
{{ table.data.verbose_name_plural }}
{% endif %}
</li>
{% endblock pagination.cardinality %}
</ul>
答案 0 :(得分:2)
你不需要为此做数学。 page
对象已经为您提供了相关信息:start_index
和end_index
。
所以:
{% with table.page as page %}
Showing {{ page.start_index }} - {{ page.end_index }} of {{ page.paginator.count }}
{% endwith %}
另外,您可以使用page.has_other_pages
来确定是否有其他页面,而不是将总数与当前计数进行比较的复杂逻辑。