網上搜的攻略有問題,碾轉了好幾個教程,最後得到完善的。以下是總結的教程,希望大家少走彎路。
首先聲明 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>
最後 實作效果。