您的位置:首页 > 编程语言 > Go语言

django分页分析

2019-06-11 20:12 1331 查看
1. 将movie.sql 导入 当前数据库中。
2. 创建新应用 movieapp   python manage.py startapp  movieapp
3. 将新应用注册到INSTALLED_APPS中
INSTALLED_APPS = [
...
'stuapp',
'movieapp'
]

4.将数据库表逆向生成模型类
python manage.py inspectdb>movieapp/models.py

5.显示影片页面
GET  movies/

配置路由

创建视图函数

6.分页
MySQL分页语句: select * from t_movie limit 0,10;

a[start:end]

设定:
num:当前页码数     size:每页显示记录数   start    end
1                   2                     0       2
2                   2                     2       4
3                   2                     4       6
n                   s                   (n-1)*s   n*s

2.Django分页
1.访问路径:http://127.0.0.1:8000/movies/page/
2.配置路由
3.创建视图函数
def pageMovieView(request):
"""利用Django分页实现影片展示"""

#0.获取当前页码数
num = request.GET.get('num',1)
num = int(num)

#1.获取所有的影片信息
tmovies = TMovie.objects.all().order_by('id')

#2.创建django分页对象
page_obj = Paginator(object_list=tmovies,per_page=12)
# Paginator(tmovies,12)

#3.获取当前页的数据
try:
per_page_list = page_obj.page(num)
except EmptyPage:
per_page_list = page_obj.page(1)

return render(request,'movie.html',{'movies':per_page_list})

4.修改movie.html页面信息
<p>
{% if movies.has_previous %}
<a href="/movies/page/?num={{ movies.previous_page_number }}">上一页</a>
{% endif %}

{% if movies.has_next %}
&emsp;<a href="/movies/page/?num={{ movies.next_page_number }}">下一页</a>
{% endif %}

&emsp;</p>

5.增加每页页码显示的功能

思路:
每页显示10个页码
当前页码数显示在中间位置(前5后4)
获取每页显示的起始页码数 start
获取每页显示的结束页码数  end

start  		end          num
1			10           1
1     	10            5
1     	10            6
2     	11            7
3     	12            8
n-(10/2)  start+9        n

page_num_list =  [start,end]  =  range(start,end+1)

for page in page_num_list:

核心代码:
#4.获取每页页码数的列表
#start:每页起始页码数
#end:每页结束页码数
start = num - math.ceil(10/2)

if start < 1:
start = 1

end = start + 9

if end > page_obj.num_pages:
end = page_obj.num_pages

if end < 10:
start = 1
else:
start = end - 9
#获取每页显示页码数列表
page_num_list = range(start,end+1)

Django分页涉及方法:
#创建分页器对象
page_obj = Paginator(object_list=tmovies,per_page=12)

#Paginator的方法

per_page_obj = page_obj.page(num)  --->  获取当前页的数据
page_obj.num_pages   --->获取总页数

#Page 对象的方法
#返回是否有上一页(True/False)
per_page_obj.has_previous()

#返回是否有下一页(True/False)
per_page_obj.has_next()

#返回上一页的页码数
per_page_obj.previous_page_number()

#返回下一页的页码数
per_page_obj.next_page_number()

#获取当前页码数
per_page_obj.number()

#异常对象
EmptyPage
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: