当前位置: 代码迷 >> 综合 >> django 1.97 paginator实现分页功能
  详细解决方案

django 1.97 paginator实现分页功能

热度:67   发布时间:2023-10-23 16:07:20.0

网上搜的攻略有问题,碾转了好几个教程,最后得到完善的。以下是总结的教程,希望大家少走弯路。

 首先声明 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>&lt;&lt;</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>&gt;&gt;</span></a>
 {% endif %}
</div>

最后  实现效果。