Python Django,分页,Paginator,Page

 

应用名/views.py(视图,分页,Paginator,Page):

from django.shortcuts import render
from booktest.models import AreaInfo
from django.core.paginator import Paginator  # 导入Paginator类


# 定义视图函数。 分页 pindex表示第几页
def show_area(request, pindex):

    # 1.查询出所有省级地区的信息
    areas = AreaInfo.objects.filter(aParent__isnull=True)
    # 2. 分页,每页显示10条
    paginator = Paginator(areas, 10)  # 每页显示10条数据。
    print(paginator.num_pages)   # 4  总页数
    print(paginator.page_range)  # [1, 2, 3, 4]  页码的列表。

    # pindex表示第几页。
    if pindex == '':
        # 默认取第一页的内容
        pindex = 1
    else:
        pindex = int(pindex)

    # page是Page类的实例对象,Page类有三个属性(number:页码。object_list:结果的查询集,可遍历。paginator:对应的Paginator类对象)。
    page = paginator.page(pindex)  # 返回第pindex页的内容。

    return render(request, '应用名/show_area.html', {'page':page})

templates/应用名/show_area.html(模板,显示分页条):




    
    分页



    
    {# 遍历获取每一条数据 #} {# {% for area in page.object_list %} #} {% for area in page %} {# 遍历page其实就是遍历page.object_list #}
  • {{ area.atitle }}
  • {% endfor %}
{# 判断是否有上一页 #} {% if page.has_previous %} <上一页 {% endif %} {# 遍历显示页码条 #} {% for pindex in page.paginator.page_range %} {# 判断是否是当前页 #} {% if pindex == page.number %} {{ pindex }} {% else %} {{ pindex }} {% endif %} {% endfor %} {# 判断是否有下一页 #} {% if page.has_next %} 下一页> {% endif %}

Python Django,分页,Paginator,Page_第1张图片

Python Django,分页,Paginator,Page_第2张图片

 

 

你可能感兴趣的:(Python+)