view.py得分页操作函数 
 
1.简单来说就是获取总数据树数量 然后根据页面 算多少分页 传参给到html文件 
def page_view(request, page=1):
    # 页码 page
    # 每页 数据数量 per_page
    per_page = 12
    # 分页功能
    # 元数据 【1,2,3,4,5,6,7,8,9,10】
    # 第一页数据  数据范围 1-5
    # 第二页数据  数据范围 5-10
    # 第几页      数据范围    数据下标范围   切片
    # page=1    1-10        [0~9]       [0~10]
    # page=2    10~20       [10~19]     [10~20]
    # page=3    20~30       [20~29]     [20~30]
    # ....
    # page=n  范围计算公式(page-1)*per_page~page*per_page
    p = person.objects.all()
    p = p[(page - 1) * per_page:page * per_page]
    pageCount = math.ceil(person.objects.count() / per_page)  # 向上取整获得总页数
    pages = range(1, pageCount + 1)
    # print(pageCount)
    return render(request, 'userPage.html', {'person': p, 'pages': pages})
  其中page=pages = range(1, pageCount + 1)得作用类似js里面搞出一个从1...18总共17个数组元素对象得 数字序列数组而已,python叫元组。。学习汇总卡了疑问了一下,之后得理解 
 
 
 
2.urls.py需要路由动态传参给函数 从动态调用显示那个分页    path('userPage/<int:page>/', page_view, name='userPage')
  尖括号里面对应得就是不同分页得页码 
 
 
3.渲染页面 userPage.html  Django模板语法写法 
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>用户分页</title>
    <style>
        ul {
            list-style: none;
            padding: 0;
        }
        .btn li {
            float: left;
            margin: 3px;
        }
    </style>
</head>
<body>
<h1>用户分页</h1>
<hr>
<ul>
    {% for p in person %}
        <li>{{ p.name }}-{{ p.age }}</li>
    {% endfor %}
</ul>
{#<p>{{ pages }}</p>#}
<hr>
<ul class="btn">
{#    <li>#}
{#        <a href='{% url 'Uapp:userPage' 3 %}'>#}
{#            <button>1</button>#}
{#        </a>#}
{#    </li>#}
    {% for page in pages %}
        <li>
            <a href='{% url 'Uapp:userPage' page %}'>
                <button>{{ page }}</button>
            </a>
        </li>
    {% endfor %}
    
</ul>
</body>
</html>
  4.其次还有自动分页 
a、引入自动分页依赖 
from django.core.paginator import Paginator
  
b.书写view.py自动分页处理函数def page_view2(request, page=1):
    per_page = 18
    alldata = person.objects.all().order_by('id')
    PageNator = Paginator(alldata, per_page)
    personData = PageNator.page(page)  # 获取第page页面得数据
    pageRange = PageNator.page_range  # 是一个属性 页码范围
    print(personData,pageRange)
    return render(request, 'userPageAuto.html', {'persons': personData, 'pages': pageRange})
  c.写对渲染结果django模板语法得html文件<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>用户自动分页</title>
    <style>
        ul {
            list-style: none;
            padding: 0;
        }
        .btn li {
            float: left;
            margin: 3px;
        }
    </style>
</head>
<body>
<h1>用户自动分页</h1>
<hr>
<ul>
    {% for person in persons %}
        <li>{{ person.name }}-{{ person.age }}</li>
    {% endfor %}
</ul>
<hr>
<ul class="btn">
    {% for page in pages %}
        <li>
            <a href='{% url 'Uapp:userPageAuto' page %}'>
                <button>{{ page }}</button>
            </a>
        </li>
    {% endfor %}
</ul>
</body>
</html>
  
 
 
 |