페이징 기능은 모든 웹사이트에 꼭 필요한 기능입니다. 페이징을 위해서는 실제로 사용자의 입력을 기반으로 데이터베이스 테이블에서 페이지에 표시되어야 할 데이터의 시작 위치를 계산합니다.
페이징 요구 사항 결정:
1. 每页显示的数据条数 2. 每页显示页号链接数 3. 上一页和下一页 4. 首页和末页
렌더링:
먼저 django에 내장된 페이징 기능을 사용하여 페이징 클래스를 작성합니다.
1 from django.core.paginator import Paginator, Page # 导入django分页模块 2 3 4 class PageInfo(object): 5 def __init__(self, current_page, all_count, base_url, per_page=10, show_page=11): 6 """ 7 8 :param current_page: 当前页 9 :param all_count: 总页数10 :param base_url: 模板11 :param per_page: 每页显示数据条数12 :param show_page: 显示链接页个数13 """14 #若url错误,默认显示第一页(错误类型可能为:空页面编号,非整数型页面编号)15 try:16 self.current_page = int(current_page)17 except Exception as e:18 self.current_page = 119 20 #根据数据库信息条数得出总页数 21 a, b = divmod(all_count, per_page)22 if b:23 a += 124 self.all_page = a 25 26 self.base_url = base_url27 self.per_page = per_page28 self.show_page = show_page29 30 #当前页起始数据id31 def start_data(self): 32 return (self.current_page - 1) * self.per_page33 34 #当前页结束数据id35 def end_data(self): 36 return self.current_page * self.per_page37 38 #动态生成前端html39 def pager(self):40 page_list = []41 half = int((self.show_page - 1)/2)42 #如果:总页数 show_page47 else:48 #如果:current_page - half 总页数,默认显示页数范围为:总页数 - show_page ~ 总页数54 if self.current_page + half > self.all_page:55 end_page = self.all_page + 156 start_page = end_page - self.show_page57 else:58 start_page = self.current_page - half59 end_page = self.current_page + half + 160 61 #首页62 first_page = "
그런 다음 뷰에 메서드를 작성합니다(여기에 작성됨). app01 Medium):
1 from utils.pagnition import PageInfo # 从文件中导入上步自定义的分页模块2 3 def custom(request):4 all_count = models.UserInfo.objects.all().count() # 获取要显示数据库的总数据条数5 page_info = PageInfo(request.GET.get('page'), all_count, '/custom.html/',) # 生成分页对象6 user_list = models.UserInfo.objects.all()[page_info.start_data():page_info.end_data()] # 利用分页对象获取当前页显示数据7 return render(request, 'custom.html', {'user_list': user_list, 'page_info': page_info}) # 模板渲染
그런 다음 템플릿 디렉터리에 "custom.html" 파일을 작성합니다.
1 nbsp;html> 2 3 4 <meta> 5 <title>customers</title> 6 {# 引入bootstrap样式#} 7 <link> 8 9 10 <h1>customers</h1>11 {#当前页显示的数据#}12
마지막으로 URL 관계(urls.py)를 추가합니다.
1 from django.conf.urls import url2 from django.contrib import admin3 from app01 import views as app01_views4 5 urlpatterns = [6 url(r'^custom.html/$', app01_views.custom),7 ]
이 시점에서, 사용이 완료되었습니다. Django의 페이징 기능은 다양한 비즈니스 페이지에 적용할 수 있는 페이징 모듈을 사용자 정의합니다.
참고 자료:
1. Python으로 가는 길 [17부]: Django [고급 장]
위 내용은 페이징 예제에 대한 Django 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!