博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Django简单博客实战(四)--- 分页实现
阅读量:3923 次
发布时间:2019-05-23

本文共 4763 字,大约阅读时间需要 15 分钟。

Django实现分页

项目地址:https://github.com/ylpxzx/lifeblog

Django自带分页组件实现分页器

  1. 视图函数views.py中配置
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})
  1. 模板文件中编写分页语句
{% block area %}
{% for post in post_list %}
  • {
    { post }}
  • {% endfor %}
    {% endblock %}
    1. 如果页数十分多时,换另外一种显示方式
    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())

    Django ListView视图实现分页

    1. 在视图views.py文件中配置paginate_by
    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
    1. 模板文件中编写分页语句

    转载地址:http://bgugn.baihongyu.com/

    你可能感兴趣的文章
    Flex 中的元数据标签
    查看>>
    flex4 中创建自定义弹出窗口
    查看>>
    01Java基础语法-11. 数据类型之间的转换
    查看>>
    01Java基础语法-13. if分支语句的灵活使用
    查看>>
    01Java基础语法-15.for循环结构
    查看>>
    01Java基础语法-16. while循环结构
    查看>>
    01Java基础语法-17. do..while循环结构
    查看>>
    01Java基础语法-18. 各种循环语句的区别和应用场景
    查看>>
    01Java基础语法-19. 循环跳转控制语句
    查看>>
    Django框架全面讲解 -- Form
    查看>>
    socket,accept函数解析
    查看>>
    今日互联网关注(写在清明节后):每天都有值得关注的大变化
    查看>>
    ”舍得“大法:把自己的优点当缺点倒出去
    查看>>
    [今日关注]鼓吹“互联网泡沫,到底为了什么”
    查看>>
    [互联网学习]如何提高网站的GooglePR值
    查看>>
    [关注大学生]求职不可不知——怎样的大学生不受欢迎
    查看>>
    [关注大学生]读“贫困大学生的自白”
    查看>>
    [互联网关注]李开复教大学生回答如何学好编程
    查看>>
    [关注大学生]李开复给中国计算机系大学生的7点建议
    查看>>
    [关注大学生]大学毕业生择业:是当"鸡头"还是"凤尾"?
    查看>>