Django-分页
django内置的分页
Paginator对象
Page对象
示例
from django.core.paginator import Paginatordef students(request, num): allStudents = Student.objects.all() #分页 每页6条数据 paginator = Paginator(allStudents, 6) print(paginator.count, paginator.num_pages, paginator.page_range) pageStus = paginator.page(num) return render(request, "students.html", {"stus":pageStus})学生信息 学生信息
- {% for stu in stus %}
- { { stu.name }}--{ { stu.grade }}--{ { stu.age }} {% endfor %}
django-pure-pagination 分页
(1)安装
pip install django-pure-pagination
(2)settings里面添加
INSTALLED_APPS = ( ... 'pure_pagination',)
(3)views中使用方法
class OrgView(View): '''课程机构''' def get(self, request): # 所有课程机构 all_orgs = CourseOrg.objects.all() # 有多少家机构 org_nums = all_orgs.count() # 所有城市 all_citys = CityDict.objects.all() # 对课程机构进行分页 # 尝试获取前台get请求传递过来的page参数 # 如果是不合法的配置参数默认返回第一页 try: page = request.GET.get('page', 1) except PageNotAnInteger: page = 1 # 这里指从allorg中取五个出来,每页显示5个 p = Paginator(all_orgs, 5, request=request) orgs = p.page(page) return render(request, "org-list.html", { "all_orgs": orgs, "all_citys": all_citys, "org_nums": org_nums, })
(4)模板修改
#{%for course_org in all_orgs%}{%for course_org in all_orgs.object_list%}...{%endfor%}
(5)分页功能
{% if all_orgs.has_previous %}
- 上一页
{% endif %} {% for page in all_orgs.pages %} {% if page %} {% ifequal page all_orgs.number %}- { { page }}
{% else %}- { { page }}
{% endifequal %} {% else %}- ...
{% endif %} {% endfor %} {% if all_orgs.has_next %}- 下一页
{% endif %}