pythn分页技术:
一、利用算法来进行分页
from django.contrib import admin
from django.urls import path
from app01 import views
urlpatterns = [
path('admin/', admin.site.urls),
path('index/', views.index),
]
from django.shortcuts import render,HttpResponse
import json
# Create your views here.
user_list=[]
for i in range(1,999):
user={'name':'root'+str(i),'age':i}
user_list.append(user)
def index(request):
per_page_count = 10
current_page=request.GET.get('p')
current_page=int(current_page)
start_page=(current_page-1)*per_page_count
end_page=current_page*per_page_count
data=user_list[start_page:end_page]
prve_page=current_page-1
if prve_page<=1:
prve_page=1
next_page=current_page+1
if next_page>=999%10:
next_page=100
return render(request,'index.html',{'user_list':data,'prve_page':prve_page,'next_page':next_page})
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<ul>
{% for row in user_list %}
<li>{{ row.name }}----{{ row.age }}</li>
{% endfor %}
<a href="/index?p={{ prve_page }}">上一页</a>
<a href="/index?p={{ next_page }}">下一页</a>
</ul>
</body>
</html>
完成后效果如下:
2利用pyhon自带的Paginator
from django.contrib import admin
from django.urls import path
from app01 import views
urlpatterns = [
path('admin/', admin.site.urls),
path('show',views.show)
]
from django.core.paginator import Paginator,EmptyPage,PageNotAnInteger
def show(request):
#per_page:每页显示数量
#count:数据总个数
#num_page:总页数
#page_range:总页数的范围:(1,10),(1,100)...
#page:page对象(是否有上一页和下一页)
current_page=request.GET.get('p')
paginator=Paginator(user_list,10)
try:
pota=paginator.page(current_page)
except PageNotAnInteger:
pota=paginator.page(1)
except EmptyPage:
pota=paginator.page(paginator.num_pages)
return render(request,'show.html',{'pota':pota})
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<ul>
{% for foo in pota.object_list %}
<li>{{ foo.name}}--{{ foo.age }}</li>
{% endfor %}
{% if pota.has_previous %}
<a href="/show?p={{pota.previous_page_number}}"><<上一页</a>
{% endif %}
{% if pota.has_next %}
<a href="/show?p={{pota.next_page_number}}">下一页>></a>
{% endif %}
</ul>
</body>
</html>