微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Django反向页面对象编号

如何解决Django反向页面对象编号

我使用 {{ 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 %}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。