django提供了一个新的类来帮助管理分页数据,这个类存放在django/core/paginator.py.它可以接收列表、元组或其它可迭代的对象。本文将分三步介绍django paginator 分页的实现步骤
一、通过模型创建subject
django models
1
2
3
4
5
6
7
8
9
10
11
12
|
from django.db import models
class subject(models.model):
"" "学科" "”
no = models.autofield(primary_key = true, verbose_name = "编号" )
name = models.charfield(max_length = 31 , verbose_name = "名称" )
intro = models.charfield(max_length = 511 , verbose_name = "介绍" )
def __str__( self ):
return self .name
class meta:
db_table = 'tb_subject' verbose_name_plural = "学科"
|
二、通过view模块,要呈现到前端的数据
django view 的配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
from django.shortcuts import render
from django.core.paginator import paginator, invalidpage, emptypage, pagenotaninteger
from vote.models import subject
def show_subject(request):
"""查询学科"""
#查询subject 表的所有数据
subjects = subject.objects. all ().order_by("no”)
#使用paginator模块对数据分页,一页5条数据
paginator = paginator(subjects, 5 )
#使用request.get.get()函数获取uri中的page参数的数值
page = request.get.get( 'page' )
try :
#通过获取上面的page参数,查询此page是否为整数并且是否可用
subject_obj = paginator.page(page)
except pagenotaninteger:
subject_obj = paginator.page( 1 )
except (emptypage, invalidpage):
subject_obj = paginator.page(paginator.num_pages)
return render(request, "vote/subject.html" , { 'subject_list' : subject_obj})
|
三、将view中的数据渲染到前端模版上
前端分页代码块:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
<div class = "pull-right" style = "margin - right: 480px ;margin - top: 0px ”>
<!— 分页功能 - - >
<nav>
<ul class = "pagination”>
<!— 分页功能前端的方向箭头代码 - - >
{ % if subject_list.has_previous % }
<li class = "enabled" >
<a href = "?page={{ subject_list.previous_page_number }}" rel = "external nofollow" aria - label = "previous" >
<span aria - hidden = "true" >«< / span>
< / a>
< / li>
{ % endif % }
<!— 分页功能显示页码的中间部分代码 - - >
{ % for page_num in subject_list.paginator.page_range % }
{ % if page_num = = subject_list.number % }
<li class = "active" >
<a href = "#" rel = "external nofollow" >
{{ page_num }}
<span class = "sr-only" >(current)< / span>
< / a>
< / li>
{ % else % }
<li>
<a href = "?page={{ page_num }}" rel = "external nofollow" >{{ page_num }}
<span class = "sr-only" >(current)< / span>
< / a>
< / li>
{ % endif % }
{ % endfor % }
<!— 分页功能末端的方向箭头代码 - - >
{ % if subject_list.has_next % }
<li class = "enabled" >
<a href = "?page={{ subject_list.next_page_number }}" rel = "external nofollow" aria - label = "last" >
<span aria - hidden = "true" >»< / span>
< / a>
< / li>
{ % endif % }
< / ul>
< / nav>
< / div>
|
四、最终显示效果
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:https://segmentfault.com/a/1190000019441086