网上搜的攻略有问题,碾转了好几个教程,最后得到完善的。以下是总结的教程,希望大家少走弯路。
首先声明 1.97版本不需要在setting.py里设置任何东西。 直接可以导入分页paginato .而以前的版本好像还需要导入配置。 我耗费了大量的时间在配置上,最后却不需要配置。此处大误。
数据库
#新闻 class New(models.Model): title = models.CharField(u'标题', max_length=256) content = models.TextField(u'内容') pub_date = models.DateTimeField(u'发表时间', auto_now_add=True, editable = True) update_time = models.DateTimeField(u'更新时间',auto_now=True, null=True) def __unicode__(self): return self.title
视图
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger from django.shortcuts import render
def new(request): blogs = New.objects.all() paginator = Paginator(blogs, 5) # 每页显示数据条数 page = request.GET.get('page') try: blogs = paginator.page(page) except PageNotAnInteger: # If page is not an integer, deliver first page. blogs = paginator.page(1) except EmptyPage: # If page is out of range (e.g. 9999), deliver last page of results. blogs = paginator.page(paginator.num_pages) return render(request, 'new.html', {'blogs': blogs})return render(request, 'product.html', {'contacts': contacts})
前端
{% for blog in blogs %} <div> {{blog.title}} {{blog.content|truncatechars:100}} </div> {% endfor %} <div class="pagination"> {% if blogs.has_previous %} <a class='paginator' title='上一页' href='?page={{ blogs.previous_page_number }}'><span><<</span></a> {% endif %} {% for page in blogs.paginator.page_range %} {% if page = blogs.number %} <a class='paginator_current' title='当前页:{{ page }}'><span>{{ page }}</span></a> {% else %} <a class='paginator' href='?page={{ page }}' title='{{ page }}'><span>{{ page }}</span></a> {% endif %} {% endfor %} {% if blogs.has_next %} <a class='paginator' title='下一页' href='?page={{ blogs.next_page_number }}'><span>>></span></a> {% endif %} </div>
最后 实现效果。