首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Django-pure-pagination的使用

Django-pure-pagination的使用

作者头像
菲宇
发布2019-09-06 10:08:56
发布2019-09-06 10:08:56
1.3K0
举报
文章被收录于专栏:菲宇菲宇

Django自带有分页的两个类,但是用起来没有第三方这个分页模块方便,下面介绍一下django-pure-pagination使用方法。该库基于django.core.pagination,并在这个基础上做了一些改进。

https://github.com/jamespacileo/django-pure-pagination

1. 安装模块:

代码语言:javascript
复制
pip install django-pure-pagination

2. 配置

在settings中

代码语言:javascript
复制
INSTALLED_APPS = (
    ...
    'pure_pagination',
)

还可以在settings中加入一些分页配置,这里的功能是以10页为节点隐藏

代码语言:javascript
复制
PAGINATION_SETTINGS = {
    'PAGE_RANGE_DISPLAYED': 10,
    'MARGIN_PAGES_DISPLAYED': 2,
    'SHOW_FIRST_PAGE_WHEN_INVALID': True,}
代码语言:javascript
复制
views
代码语言:javascript
复制
def category(request,pk):
    category = get_object_or_404(Category, pk=pk)
    list = Article.objects.filter(category=pk).order_by('-update_time')
    # 获取当前页, 有则为page,无则默认为1
    try:
        page = request.GET.get('page', 1)
    except PageNotAnInteger:
        page = 1
    p = Paginator(list, 5, request=request)
    lists = p.page(page)
    print(lists)
    return render(request,'bbs/list.html',locals())

其中p = Paginator(list, 5, request=request),中的5为每页展示的数据

模板

代码语言:javascript
复制
{% for item in lists.object_list %}
   。。。。。。
{% endfor %}
#分页部分
 <div id="pgt" class="bm bw0 pgs cl">
    <span id="fd_page_top">
    <div class="pg">
        {% for page in lists.pages %}
            {% if page %}
                {% ifequal page lists.number %}
        <strong>{{ page }}</strong>
        {% else %}
        <a href="?{{ page.querystring }}">{{ page }}</a>
                        {% endifequal %}
            {% else %}
               <a>....</a>
    {% endif %}
        {% endfor %}
    {% if lists.has_next %}
        <a href="?{{ lists.next_page_number.querystring }}" class="nxt">下一页</a>
    {% endif %}
    </div></span>
     {% if lists.has_previous %}
     <span class="pgb y"  initialized="true"><a href="?{{ lists.previous_page_number.querystring }}">上一页</a></span>
 {% endif %}

</div>
</div>
<!--分页部分-->

#其他方法
<div class="pageturn">
    <ul class="pagelist">
        {% if all_orgs.has_previous %}
            <li class="long"><a href="?{{ all_orgs.previous_page_number.querystring }}">上一页</a></li>
        {% endif %}
 
        {% for page in all_orgs.pages %}
            {% if page %}
                {% ifequal page all_orgs.number %}
                    <li class="active"><a href="?{{ page.querystring }}">{{ page }}</a></li>
                {% else %}
                    <li><a href="?{{ page.querystring }}" class="page">{{ page }}</a></li>
                {% endifequal %}
            {% else %}
                <li class="none"><a href="">...</a></li>
            {% endif %}
        {% endfor %}
        {% if all_orgs.has_next %}
            <li class="long"><a href="?{{ all_orgs.next_page_number.querystring }}">下一页</a></li>
        {% endif %}
    </ul>
</div>

#是否有前一页

page.has_previous #是否有下一页

page.has_next #前一页的页码

page.previous_page_number.querystring #下一页的页码

page.next_page_number_querystring #当前页

page.number #当前页页码

page.querystring

#如果a=b {% ifequal a b %} {% endifequal %}

最终效果

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019年09月04日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 安装模块:
  • 2. 配置
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档