本文共 4763 字,大约阅读时间需要 15 分钟。
项目地址:https://github.com/ylpxzx/lifeblog
from django.shortcuts import render,HttpResponsefrom django.views.generic import Viewfrom .models import Postfrom django.core.paginator import Paginator,EmptyPage,PageNotAnInteger # 添加该行class IndexView(View): def get(self,request): post_list = Post.objects.all().order_by("-id") # 分页器 paginator = Paginator(post_list,6) # print("count:",paginator.count) # 数据总数 # print("num_pages:",paginator.num_pages) # 总页数 # print("page_range:",paginator.page_range) # 页码列表 # # page1 = paginator.page(1) # 第1页的page对象 # for i in page1: # 遍历第1页的所有数据对象 # print(i) # # print("第一页的所有数据:",page1.object_list) # 第1页的所有数据 # # page2 = paginator.page(2) # print(page2.has_next()) # 是否有下一页 # print(page2.next_page_number()) # 下一页的页码 # print(page2.has_previous()) # 是否有上一页 # print(page2.previous_page_number()) # 上一页的页码 page = request.GET.get('page', 1) currentPage = int(page) try: print(page) post_list = paginator.page(page) except PageNotAnInteger: post_list = paginator.page(1) except EmptyPage: post_list = paginator.page(paginator.num_pages) return render(request,"index.html",{ 'post_list':post_list,"paginator":paginator,"currentPage":currentPage})
{% block area %}{% endblock %}
class IndexView(View): def get(self,request): post_list = Post.objects.all().order_by("-id") # 分页器 paginator = Paginator(post_list,6) # print("count:",paginator.count) # 数据总数 # print("num_pages:",paginator.num_pages) # 总页数 # print("page_range:",paginator.page_range) # 页码列表 # # page1 = paginator.page(1) # 第1页的page对象 # for i in page1: # 遍历第1页的所有数据对象 # print(i) # # print("第一页的所有数据:",page1.object_list) # 第1页的所有数据 # # page2 = paginator.page(2) # print(page2.has_next()) # 是否有下一页 # print(page2.next_page_number()) # 下一页的页码 # print(page2.has_previous()) # 是否有上一页 # print(page2.previous_page_number()) # 上一页的页码 page = request.GET.get('page', 1) currentPage = int(page) # 如果页数十分多时,换另外一种显示方式 if paginator.num_pages > 11: if currentPage - 5 < 1: pageRange = range(1, 11) elif currentPage + 5 > paginator.num_pages: pageRange = range(currentPage - 5, paginator.num_pages + 1) else: pageRange = range(currentPage - 5, currentPage + 6) else: pageRange = paginator.page_range try: print(page) post_list = paginator.page(page) except PageNotAnInteger: post_list = paginator.page(1) except EmptyPage: post_list = paginator.page(paginator.num_pages) return render(request,"index.html",locals())
from django.views.generic.list import ListViewfrom .models import Post,Categoryclass IndexView(ListView): model = Post template_name = "index.html" context_object_name = "post_list" paginate_by = 6 def get_queryset(self): post_list = Post.objects.all().order_by("-id") return post_list def get_context_data(self, *, object_list=None, **kwargs): kwargs['category_list'] = Category.objects.all().order_by('post_category') # 设置分类字段到模板上下文 content = super(IndexView,self).get_context_data(**kwargs) print(content) # 检查是否有paginate对象 return content
转载地址:http://bgugn.baihongyu.com/