本文實例講述了Django實現簡單分頁功能的方法。分享給大家供大家參考,具體如下:
使用django的第三方模塊django-pure-pagination
安裝模塊:
pip install django-pure-pagination
將'pure_pagination'添加到settings.py文件中
INSTALLED_APPS = ( ... 'pure_pagination',)
在view.py文件中
from django.shortcuts import renderrom .models import mymodelfrom pure_pagination import Paginator, EmptyPage, PageNotAnIntegerdef NewsList(request):  all_news = mymodel.objects.all().order_by('-add_time')  # 分頁功能  try:    page = request.GET.get('page', 1)  except PageNotAnInteger:    page = 1  p = Paginator(all_news, 3, request=request)  news = p.page(page)  return render(request, 'rdxw.html', {'all_news': news})在template.py文件中調用view傳遞的參數'all_news'需要加上'.object_list'
{% extends 'base.html' %}{% block content %}<ul>{% for new in all_news.object_list %}  <li>{{new.content}}</li>{% endblock %}</ul>實現翻頁的部分:
<div class="pageturn">  <ul class="pagelist">    {% if all_news.has_previous %}      <li class="long"><a href="?{{ all_news.previous_page_number.querystring }}" rel="external nofollow" >上一頁</a></li>    {% endif %}    {% for page in all_news.pages %}      {% if page %}        {% ifequal page all_news.number %}          <li class="active"><a href="?{{ page.querystring }}" rel="external nofollow" rel="external nofollow" >{{ page }}</a></li>        {% else %}          <li><a href="?{{ page.querystring }}" rel="external nofollow" rel="external nofollow" class="page">{{ page }}</a></li>        {% endifequal %}      {% else %}        <li class="none"><a href="">...</a></li>      {% endif %}    {% endfor %}    {% if all_news.has_next %}      <li class="long"><a href="?{{ all_news.next_page_number.querystring }}" rel="external nofollow" >下一頁</a></li>    {% endif %}  </ul></div>樣式較文檔提供的簡化了很多,方便使用。
.pageturn .pagelist {  display: table-cell;  vertical-align: middle;  overflow: hidden;}.pageturn li {  width: 30px;  height: 30px;  line-height: 30px;  margin-left: 10px;  float: left;  text-align: center;}.pageturn li:first-child {  margin-left: 0;}.pageturn li:hover a, .pageturn .active a {  background: #717171;  color: #fff;  border-color: #eaeaea;}.pageturn a {  border: 1px solid #eaeaea;  display: block;  height: 28px;  color: #6c6c6c;}.pageturn .long {  width: 100px;}.pageturn .none a {  border: 0;}.pageright {  float: right;  width: auto;  display: inline;  clear: none;  margin-top: 10px;}            
新聞熱點
疑難解答