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 %}
 <a href="/movies/page/?num={{ movies.next_page_number }}">下一页</a>
{% endif %}
 </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
django分页分析
最新推荐文章于 2024-04-08 10:58:58 发布