django中django-pure-pagination分页器

django中django-pure-pagination分页器,第1张

一. 安装模块
  • django_pure_pagination 是第三方扩展包, 所以得通过命令来安装
  • pip install django_pure_pagination
二. 在settings.py中增加添加分页器
INSTALLED_APPS = [
    ...
    'pure_pagination',  # 分页器应用
]
三. 分页后可修改页码显示的个数和样式
# 配置分页器的样式
PAGINATION_SETTINGS = {
    'PAGE_RANGE_DISPLAYED': 5,  # 同一方向最多显示几个
    'MARGIN_PAGES_DISPLAYED': 2,  # 省略号前后有几个
    'SHOW_FIRST_PAGE_WHEN_INVALID': True,  # 在无效页码的时候显示到第1页
}
四. 视图中的分页
from pure_pagination import Paginator


def index(request):
    """主页"""
    # 获取从前面点击的页面数字, 默认1
    current_page = request.GET.get('page', 1)
    # 获取所有的文章
    post_list = Post.objects.all()

    # 将所有数据分为10页
    paginator = Paginator(post_list, 10)
    # 生成一页中的文章
    page_obj = paginator.page(current_page)
    # 封装数据并返回页面
    context['page_obj'] = page_obj
    return render(request, 'blog/index.html', context)
五. 前端页面, 使用bootstrap美化分页
{# 分页器 #}
<nav style="text-align: center">
    <ul class="pagination">
        {% if page_obj.has_previous %}  {# 如果有上一页才可以点击<< #}
            <li class="previous">
                {# 此处相对下面加了a标签, 可以点击 #}
                <a href="?{{ page_obj.previous_page_number.querystring }}">
                    <span aria-hidden="true">&laquo;</span>
                </a>
            </li>
        {% else %}  {# 否则禁止点击上一页 #}
            <li class="previous disabled">
                <span aria-hidden="true">&laquo;</span>
            </li>
        {% endif %}

        {% for page in page_obj.pages %}{# 遍历所有页数 #}
            {% if page %}
                {# 如果遍历到的数字和当前页相同, 则添加active, 高度 #}
                <li {% ifequal page page_obj.number %} class="active"{% endifequal %}>
                    <a href="?{{ page.querystring }}">{{ page }}</a>
                </li>
            {% else %}
                <li class="disabled">
                    <span>...</span>
                </li>
            {% endif %}
        {% endfor %}

        {% if page_obj.has_next %}{# 如果有下一页才可以点击>> #}
            <li class="next">
                {# 此处相对下面加了a标签, 可以点击 #}
                <a href="?{{ page_obj.next_page_number.querystring }}">
                    <span aria-hidden="true">&raquo;</span>
                </a>
            </li>
        {% else %}
            <li class="next disabled">
                <span aria-hidden="true">&raquo;</span>
            </li>
        {% endif %}
    </ul>
</nav>
六. 最终效果


七. page的常用属性
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 %}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/916994.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-16
下一篇 2022-05-16

发表评论

登录后才能评论

评论列表(0条)

保存