需求:
对于有很多数据,并不希望一次性全部展现在一个页面,需要一个分页的,定好每一页显示的内容
那,如何满足这个需求呢?
- 通过第三方模块 django-pure-pagination
pip install django-pure-pagination
- setting配置,把这个模块添加到app中
# 添加分页app INSTALLED_APPS = ( ... 'pure_pagination', ) # 分页app配置 PAGINATION_SETTINGS = { # 总共显示多少个提示页面 'PAGE_RANGE_DISPLAYED': 10,、 # 最前面和最后面显示多少页面提示 'MARGIN_PAGES_DISPLAYED': 2, # 当页面不存在时候,不返回404而是显示第一页 'SHOW_FIRST_PAGE_WHEN_INVALID': True, }
- view中把多个结果的查询对象交个pure-pagination
# 进行分页 try: page = request.GET.get('page', 1) except PageNotAnInteger: page = 1 p = Paginator(all_courses, 6, request=request) all_courses = p.page(page) # all_courses 是表查询的结果,把all_courses传递到模版
- template中通过object_list获取结果
<div id="inWindow"> <div class="tab_cont " id="content"> <div class="group_list"> {% for course in all_courses.object_list %} <div class="box"> <a href="{% url 'course:detail' course.id %}"> <img width="280" height="350" class="scrollLoading" src="{{ MEDIA_URL }}{{ course.image }}"/> </a> <div class="des"> <a href="{% url 'course:detail' course.id %}"> <h2>{{ course.name }}</h2> </a> <span class="fl">时长:<i class="key">{{ course.learn_times }}</i></span> <span class="fr">学习人数:{{ course.students }} </span> </div> <div class="bottom"> <a href="course-detail.html"><span class="fl">{{ course.courser_org.name }}</span></a> <span class="star fr notlogin " data-favid="15"> {{ course.fav_nums }} </span> </div> </div> {% endfor %} </div> <div class="pageturn"> <ul class="pagelist"> {# 显示上一页,没有不显示#} {% if all_courses.has_previous %} <li class="long"><a href="?{{ all_courses.previous_page_number.querystring }}">上一页</a></li> {% endif %} {# 中间显示页面#} {% for page in all_courses.pages %} {% if page %} {% ifequal page all_courses.number %} <li class="active"><a href="?{{ page.querystring }}">{{ page }}</a></li> {% else %} <li><a href="?{{ page.querystring }}" class="page">{{ page }}</a></li> {% endifequal %} {% else %} <li><a href="" class="none">...</a></li> {% endif %} {% endfor %} {# 判断是否有下一页,有的话显示下一页,没有不显示#} {% if all_courses.has_next %} <li class="long"><a href="?{{ all_courses.next_page_number.querystring }}">下一页</a></li> {% endif %} </ul> </div> </div> </div>
Githup地址 : https://github.com/jamespacileo/django-pure-pagination