分批获取数据的方法
数据库方法
models.Uinfo.objects.all()[10:20]
django自带的方法
创建一个新的url
urlpatterns = [
url(r'^index.html/', views.index),
]
创建index函数
def index(request):
"""
分页功能
:param request:
:return:
"""
user_list = models.Uinfo.objects.all()#获取到数据
return render(request,'index.html',{'user_list':user_list})#返回到index页面上显示
创建index.html页面
在templates目录下面创建index页面
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>用户列表</title>
</head>
<body>
<h1>用户列表</h1>
<ul>
{% for user in user_list %}
<li>{
{ user.name }}</li>
{% endfor %}
</ul>
</body>
</html>
浏览器访问
通过浏览器访问可以看到结果都显示到了index的页面上
存在的问题
通过浏览器访问,发现所有的用户都显示到了页面上,但是有一个问题,如果数据库中有上千,百万个数据,这一个页面要全部显示出来是很卡,也很不好。那么如何解决这些问题那。
给数据库添加数据
def index(request):
#下面的for循环是给数据库中添加200条数据
for i in range(200):
name = "root" + str(i)
models.Uinfo.objects.create(name=name,age=18,ut_id=1)
user_list = models.Uinfo.objects.all()
return render(request,'index.html',{'user_list':user_list})
在index函数里面写入上面代码后,重新浏览器访问index.html,让数据库生成上面的数据。
使用django的paginator分页
def index(request):
"""
分页功能
:param request:
:return:
"""
# for i in range(200):
# name = "root" + str(i)
# models.Uinfo.objects.create(name=name,age=18,ut_id=1)
from django.core.paginator import Paginator,Page#导入模块
current_pagnum = request.GET.get('page')
user_list = models.Uinfo.objects.all()
paginator = Paginator(user_list,10)
#创建一个对象paginator,又有这是一个对象,所以可以通过点“.”来调用一些功能
# per_page: 每页显示条目数量
# count: 数据总个数
# num_pages:总页数
# page_range:总页数的索引范围,如: (1,10),(1,200)
# page: page对象
posts = paginator.page(number=current_pagnum)#这个num就是现实当前第几页