网上搜的攻略有问题,碾转了好几个教程,最后得到完善的。以下是总结的教程,希望大家少走弯路。
首先声明 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>
最后 实现效果。