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第三方库


热门话题
任务“:app:compiledBugJava”与“;”的java Android执行失败预期   cmd Java找不到主类   应用程序关闭后java还原Android回栈   无法识别Java中通过OutputStream发送到Firefox的HTML代码   Redis hmget的java超时时间   排序java如何生成按字母顺序排序集合的泛型函数   java从何处提取默认编码?   必须指定java Spring引导安全配置authenticationManager   创建目录的java单元测试代码   初始化期间的java空变量   java如何通过同一个交换机编码启用和禁用Wifi、移动数据和GPS?   java将顺序UI作业排队并在UI中显示它们   java JMS连接未连接到远程JBoss,但连接本地实例   swing Java多GUI窗口创建   包装jar的java OSGi服务   java意外字符“ï”,使用Jackson解析JSON