Django反向页面对象计数
Django reverse page object numeration
我用{{ forloop.counter0|add:page_obj.start_index }}
并得到(分页 3):
Page1: 1 Page2: 4
2 5
3
如果我使用{{ forloop.revcounter0|add:page_obj.start_index }}
我得到:
Page1: 3 Page2: 5
2 4
1
如何获得:
Page1: 5 Page2: 2
4 1
3
我在想 {{ paginator.count|add:SOMETHING }}
最好的解决方案是编写 custom template tag 来执行此操作。在你的一些合适的应用程序中创建一个目录 templatetags.py
并在其中添加一个文件 __init__.py
。在目录内部创建一个新文件,我们将在其中编写模板标签,比如 pagination_extras.py
。在此之后,您的目录结构将类似于:
<appname>/
__init__.py
models.py
templatetags/
__init__.py
pagination_extras.py
views.py
现在 pagination_extras.py
创建一个自定义模板标签来为您进行计算:
from django import template
register = template.Library()
@register.simple_tag
def pagination_reverse_numbering(paginator, page_obj, loop_count):
return paginator.count - page_obj.start_index() - loop_count + 1
现在在您的模板中,您将首先加载此标记,然后使用它来执行编号:
{% load pagination_extras %}
...
{% for item in page_obj %}
{% pagination_reverse_numbering paginator page_obj forloop.counter0 %}
{% endfor %}
我用{{ forloop.counter0|add:page_obj.start_index }}
并得到(分页 3):
Page1: 1 Page2: 4
2 5
3
如果我使用{{ forloop.revcounter0|add:page_obj.start_index }}
我得到:
Page1: 3 Page2: 5
2 4
1
如何获得:
Page1: 5 Page2: 2
4 1
3
我在想 {{ paginator.count|add:SOMETHING }}
最好的解决方案是编写 custom template tag 来执行此操作。在你的一些合适的应用程序中创建一个目录 templatetags.py
并在其中添加一个文件 __init__.py
。在目录内部创建一个新文件,我们将在其中编写模板标签,比如 pagination_extras.py
。在此之后,您的目录结构将类似于:
<appname>/
__init__.py
models.py
templatetags/
__init__.py
pagination_extras.py
views.py
现在 pagination_extras.py
创建一个自定义模板标签来为您进行计算:
from django import template
register = template.Library()
@register.simple_tag
def pagination_reverse_numbering(paginator, page_obj, loop_count):
return paginator.count - page_obj.start_index() - loop_count + 1
现在在您的模板中,您将首先加载此标记,然后使用它来执行编号:
{% load pagination_extras %}
...
{% for item in page_obj %}
{% pagination_reverse_numbering paginator page_obj forloop.counter0 %}
{% endfor %}