django模板中分页的实用程序

django-pagination-plus的Python项目详细描述


此模板标记库用于以分页方式显示分页链接。 Django观点。它公开一个模板标记{% paginationplus %},该标记将 注意重复页码。

用法

在设置中将paginationplus添加到INSTALLED_APPS中。

在分页视图模板的开头,使用以下命令加载 标签模块:

{% load paginationplus %}

然后,在您希望分页链接出现的位置,使用 跟随块标记。

{% paginationplus page_obj url_name url_arg1=... url_arg2=... %}
    ...
{% endpaginationplus %}

传递给开始标记的第一个参数是 分页视图。其余参数与传递给的参数相同 内置的{% url %}标记,减去为 视图中的页码,例如泛型视图中的page

块遍历Paginator对象中可用的页码 与作为第一个参数传递给 打开标签。

块的内容在每次迭代中呈现一次,在这个块中, 名为paginationplus的模板变量可用。

此模板变量公开四个属性:

  • number 此迭代主题的页码
  • url 包含当前迭代的页码的页的URL。
  • is_filler 如果为true,则当前迭代不表示页码, 但它代表一个填充物,即页码序列中的一个孔。 更多信息见下文。
  • is_current 如果为true,则当前迭代表示 当前显示在视图中。

单个标记用法

块标记的替代方法如下:

{% paginationplus page_obj url_name url_arg1=... url_arg2=... ... with 'template/name.html' %}

在标记中使用with表示迭代不会在 块,但在with后面的模板中。在这个模板中, 父模板的完整上下文可用,添加了 paginationplus变量。传递给标记的模板不必是字符串, 任何可用的模板变量都可以。

设置

默认情况下,paginationplus将支持显示第一个链接, 上一页、当前页、下一页和最后一页。例如,如果您有一个分页 查看99页,当前页是第30页,下面的顺序将 迭代:[1, None, 29, 30, 31, None, 99]。假设当前页 是第3页,序列将是[1, 2, 3, 4, None, 99]

在上面的序列中,None值表示页码中的一个洞 对于这些洞,paginationplustemplate变量将 将其is_filler属性设置为True,将numberurl 属性将设置为None,而is_current将设置为False

要禁用此行为并遍历所有可用的页码,可以 将项目的PAGINATIONPLUS_CONTIGUOUS设置设置为True。 设置。

控制当前页之前和之后的页码 将被迭代,您可以设置PAGINATIONPLUS_MAX_DISTANCE选项。

例如,当PAGINATIONPLUS_MAX_DISTANCE设置为2时,以下 当页面数为99且当前 页面是30:^{TT33}$。当水流 页面是3,序列是[1, 2, 3, 4, 5, None, 99]

示例

假设您在应用程序中使用一个公开列表的泛型ListViewItem模型的对象的。让我们看看可能的urlconf:

# urls.py
from django.conf.urls import patterns, url
from django.views.generic import ListView

from exampleapp import models

urlpatterns = patterns('',
    # ...
    url(r'^items/(?:page/(?P<page>\d+)/)?$', ListView.as_view(
        model=models.Item,
        template_name='items.html',
        paginate_by=5
    ), name='show_my_items'),
)

然后,显示items.html模板中的项的部分可以 像这样:

{# items.html #}

{# ... stuff ... #}

<ul class="items">
  {% for item in object_list %}
    <li>{{item}}</li> {# or something else to display the item #}
  {% endfor %}
</ul>

<ul class="pagination">
  {% paginationplus page_obj show_my_items %}
    {% if paginationplus.is_filler %}
      <li>&hellip;</li>
    {% else %}
      <li class="{% if paginationplus.is_current %}current{% endif %}">
        <a href="{{paginationplus.url}}">{{paginationplus.number}}</a>
      </li>
    {% endif %}
  {% endpaginationplus %}
</ul>

{# ... stuff ... #}

当用户访问此视图时,HTML将如下所示:

<ul class="items">
    <li>Item 1</li>
    <li>Item 2</li>
    <li>Item 3</li>
    <li>Item 4</li>
    <li>Item 5</li>
</ul>

<ul class="pagination">
  <li class="current">
    <a href="/items/page/1/">1</a>
  </li>
  <li class="">
    <a href="/items/page/2/">2</a>
  </li>
  <li>&hellip;</li>
  <li class="">
    <a href="/items/page/20/">20</a>
  </li>
</ul>

显示页面链接的另一种可能性是在 模板而不是<a>标记及其内容:

{{paginationplus}}

这将输出一个包含页码的锚定标记,其中包含 属性设置为pagE的URL。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何使用具有多个参数的dataclass toString?   java如何在Hibernate查询和会话中启用MySQL二进制运算符。得到()   JavaSpring存储库生成与属性命名约定   java如何计算浮点数中的字符总数   如何让NetBeans向我展示Java方法的正确文档?   使用JDBCJava字符串,在PHP中连接到mysql数据库   解析简单的ANTLR项目测试java类挂起   eclipse为新Java项目将Git指向何处   java按空格或按空格拆分字符串\n   关于objective c java字节移位的帮助   java如何从中获取地图。txt文件使用属性?   java如何将整数格式化为DD格式   java循环a jaxb   java导出和运行jar   java Spring框架无法使用EntityManager保存在数据库中。合并()   java错误[TRACE][rpctest]查找入口点类:使用GWT使用Hibernate将数据插入MySql   Java读取Windows密钥状态   java无法找到正确的表达式   使用BufferedReader处理double时的java NumberFormatException   java从csv文件读取unicode字符