需求:
对于有很多数据,并不希望一次性全部展现在一个页面,需要一个分页的,定好每一页显示的内容
那,如何满足这个需求呢?
- 通过第三方模块 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