首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Django Listview分页;页面分页正确,但page_obj在模板中不起作用

Django Listview是Django框架中的一个视图类,用于展示一个对象列表。它可以自动处理分页,并提供了一些方便的方法和属性来处理分页逻辑。

在使用Django Listview进行分页时,需要进行以下几个步骤:

  1. 创建一个继承自Django Listview的视图类,并指定要展示的模型和模板。
代码语言:txt
复制
from django.views.generic import ListView
from .models import YourModel

class YourListView(ListView):
    model = YourModel
    template_name = 'your_template.html'
  1. 在模板中使用分页器进行分页展示。
代码语言:txt
复制
{% for object in object_list %}
    <!-- 展示对象内容 -->
{% endfor %}

<!-- 分页导航 -->
<div class="pagination">
    <span class="step-links">
        {% if page_obj.has_previous %}
            <a href="?page=1">&laquo; first</a>
            <a href="?page={{ page_obj.previous_page_number }}">previous</a>
        {% endif %}

        <span class="current-page">{{ page_obj.number }}</span>

        {% if page_obj.has_next %}
            <a href="?page={{ page_obj.next_page_number }}">next</a>
            <a href="?page={{ page_obj.paginator.num_pages }}">last &raquo;</a>
        {% endif %}
    </span>
</div>

在上述模板中,object_list是Listview自动传递给模板的对象列表,可以直接使用。page_obj是分页器对象,用于获取当前页码、前一页码、后一页码等信息。

然而,根据你的描述,page_obj在模板中不起作用。这可能是因为在视图类中没有正确地设置分页器的名称。默认情况下,Django Listview将分页器对象的名称设置为page_obj,但你可以通过在视图类中设置paginate_by属性来自定义分页器的名称。

代码语言:txt
复制
class YourListView(ListView):
    model = YourModel
    template_name = 'your_template.html'
    paginate_by = 10  # 每页展示的对象数量
    context_object_name = 'your_objects'  # 分页器对象的名称

在上述代码中,paginate_by属性设置了每页展示的对象数量,context_object_name属性设置了分页器对象的名称为your_objects。在模板中,你需要将page_obj替换为your_objects

代码语言:txt
复制
{% for object in your_objects %}
    <!-- 展示对象内容 -->
{% endfor %}

<!-- 分页导航 -->
<div class="pagination">
    <span class="step-links">
        {% if your_objects.has_previous %}
            <a href="?page=1">&laquo; first</a>
            <a href="?page={{ your_objects.previous_page_number }}">previous</a>
        {% endif %}

        <span class="current-page">{{ your_objects.number }}</span>

        {% if your_objects.has_next %}
            <a href="?page={{ your_objects.next_page_number }}">next</a>
            <a href="?page={{ your_objects.paginator.num_pages }}">last &raquo;</a>
        {% endif %}
    </span>
</div>

通过以上步骤,你应该能够正确地在模板中使用page_obj(或自定义的分页器对象名称)来展示分页导航,并实现正确的分页功能。

推荐的腾讯云相关产品:腾讯云云服务器(CVM),腾讯云对象存储(COS)。

  • 腾讯云云服务器(CVM):提供弹性计算能力,可根据业务需求弹性调整计算资源,支持多种操作系统和应用场景。详情请参考:腾讯云云服务器
  • 腾讯云对象存储(COS):提供高可靠、低成本的对象存储服务,适用于存储和处理各类非结构化数据,如图片、音视频、文档等。详情请参考:腾讯云对象存储
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

DjangoListView分页技术

Django分页非常方便,通过Pagination你可以很方便达到分页效果。今天主要说的是基础视图中ListView分页处理,本质还是依赖与Pagination。...): model = Msg#数据模型 context_object_name = 'msg_list'#模板变量 template_name = 'index.html...'#模板文件 paginate_by = ITEMS_PER_PAGE#一个页面显示的条目 urls.py urlpatterns = [ re_path(r'^list/(?...page_obj分页对像实例,这个名字是ListView默认生成的 page_obj的变量: page_obj.paginator.page_range:所有分页的number,是一个list page_obj.number...:当前分页的页码 page_obj.paginator.num_pages:总分页数,就是一共有多少页 page_obj的方法: page_obj.has_previous():判断是否有上一页 page_obj.previous_page_number

1K30

Django分页功能改造,一比一还原百度搜索的分页效果

,则从要把当前页放到中间 当前页接近末页的时候,重新调整开始页的策略,保证显示长度依然是固定 经过分页忽略页面效果的前提下,我们要实现一个分页效果最关键点就是得到一个要显示的页码列表。...Django设计分页 Django里面可以定义一个标签函数来做分页,这个标签函数的主要目的就是输出要显示的页码列表,然后定义一个分页模板来渲染html页面即可。...函数的逻辑是根据传入的context分页信息来生成适当的页面按钮范围。如果分页总数不大于最大显示数,则直接显示所有页码。..._replace(query=updated_query_string)) return updated_url 使用分页模板 在任何有分页对象的页面(也就是视图继承自generic.ListView...总结 这篇博客主要介绍了作者如何在Django网站实现了一个类似百度搜索页面分页效果,并提供了相关代码和思路。

31120

Django Pagination 简单分页

image.png 这里,Django 的官方文档给出了一个视图函数对列表进行分页的示例,这个视图函数获取一个联系人列表并对其分页: from django.core.paginator import...不过我们的博客项目中,我们不必写这些代码了。回顾 基于类的通用视图:ListView 和 DetailView 的内容,我们已将视图函数转换成了类视图。...为了看到分页效果,你可以把这个数值减小。这样首页的文章列表就已经分好页了。 模板设置分页导航 接下来便是模板设置分页导航,比如上一页、下一页的按钮,以及显示一些页面信息。...ListView 传递了以下和分页有关的模板变量供我们模板中使用: paginator ,即 Paginator 的实例。 page_obj ,当前请求页面分页对象。...进一步拓展 使用 Django 内置的 Pagination 只能实现上面的简单分页效果,通常更加高级的分页效果应该像下图这样: image.png 当前页面高亮显示,且显示当前页面前后几页的页码,

2.1K50

通过 Django Pagination 实现简单分页

这里 Django 的官方文档给出了一个视图函数对列表进行分页的示例,这个视图函数获取一个联系人列表并对其分页: from django.core.paginator import Paginator...模板设置分页导航 接下来便是模板设置分页导航,比如上一页、下一页的按钮,以及显示一些页面信息。我们这里设置和 Django 官方博客那样的分页导航样式(具体的样式见上图)。...ListView 传递了以下和分页有关的模板变量供我们模板中使用: paginator ,即 Paginator 的实例。 page_obj ,当前请求页面分页对象。...所以模板循环文章列表时可以选 post_list ,也可以选 object_list。...进一步拓展 使用 Django 内置的 Pagination 只能实现上面的简单分页效果,通常更加高级的分页效果应该像下图这样: 当前页面高亮显示,且显示当前页面前后几页的页码,始终显示第一页和最后一页的页码

90520

基于django的视频点播网站开发-step4-首页功能

本讲,我们开始首页功能的开发,开发过程,大家将会学习到Django的通用视图类、分页对象paginator以及foreignKey外键的使用。 效果演示 [16851ab0d057a5d6?...我这样设计的目的呢,是让大家把精力放到学习django上面来,不必过度关注花哨的页面效果。 我们把首页拆解为4个小的业务模块来开发,分别是:列表显示、分页功能、搜索功能、分类功能。...显示列表数据非常简单,我们使用django内置的视图模版类ListView来显示,首先在view.py编写IndexView类,用它来显示列表数据。...这里我们使用到了django的内置标签,比如for语句、empty语句。这些都是django中非常常用的语句。之后的教程我们会经常遇到。...Django,有现成的分页解决方案,我们开发者省了不少事情。

1.3K41

拓展 Django Pagination 实现完善的分页效果

使用 Django Pagination 实现简单的分页功能 ,我们实现了一个简单的分页导航效果。...想实现下面这样的一个比较完善的分页导航时,Django Pagination 内置的 API 已经无法满足需求。...因此我们的思路是,视图里将以上七步中所需要的数据生成,然后传递给模板模板渲染显示就行。整个视图的代码如下,代码实现的功能已有详细注释,就不在文章中进一步说明了。...# 关于什么是 Paginator,Page 类 使用 Django Pagination 实现简单的分页功能:http://zmrenwu.com/post/23/ # 已有详细说明...) # 将更新后的 context 返回,以便 ListView 使用这个字典模板变量去渲染模板 # 记住此时字典已有了显示分页导航条所需的数据

1.9K60

Django学习-第十二讲:视图高级(二)类视图、模板视图、列表视图、和分页

类视图 写视图的时候,Django除了使用函数作为视图,也可以使用类作为视图。使用类视图可以使用类的一些特性,比如继承等。...在网站开发,经常会出现需要列出某个表的一些数据作为列表展示出来。比如文章列表,图书列表等等。Django可以使用ListView来帮我们快速实现这种需求。...template_name:指定这个列表的模板。 paginate_by:指定这个列表一页展示多少条数据。 context_object_name:指定这个列表模型模板的参数名称。...他们Django的路径为django.core.paginator.Paginator和django.core.paginator.Page。...3.3 示例分页代码 <!

94420

稳定易用的 Django 分页库,完善分页功能

效果有点差强人意,我们只能点上一页和下一页的按钮进行翻页。比较完善的分页效果应该像下面这样,想实现这样一种效果,Django Pagination 内置的 API 已无能为力。...因此我们的思路是,视图中依据上述规则生成页码列表,然后模板循环显示页码列表就可以了。有了思路,实现起来其实也并不很难。...': True, # 当请求了不存在页,显示第一页 } 模板需要分页的地方,调用分页对象的 render 方法就可以了,比如在 index.html : {% if is_paginated %...分页模板预定义的路径为 pure_pagination/pagination.html,所以我们可以项目模板根路径下建立一个一模一样的文件结构,这样 django 就会首先找到我们的模板,从而应用我们自定义的模板...接下来便是模板设置分页导航了,将导航条的七个部分的数据一一展现即可,示例代码如下:

87520

diango之基于内置视图CBS编程

Class-based views是Django为解决建站过程的常见的呈现模式而建立的。..."/login/" TemplateView 显示Django HTML template 一般网站中使用模板显示的页 ListView 显示对象列表 文章列表页 DetailView 显示对象详情 文章详细页...ListView简介 listview是一个展示列表的view,返回的是一个template,包含两个关键方法: def get_context_data(self, **kwargs):...def get_queryset(self): 第一个方法返回一个字典给前端,包括分页信息,列表信息,已经其他自定义的信息;第二个方法返回数据库获取到的数据(可能经过条件迭代),具体实现的实例代码如下...Django, 我们可以使用mixin为CBVs提供更多的扩展性, 当然类继承过程, 我们推荐以下原则: Django自身提供的View永远在最右边 mixin依次以上view的左边 mixin

69130

Django源码学习-8-ListView&DetailView通用视图

Django网络应用开发的5项基础核心技术包括模型(Model)的设计,URL 的设计与配置,View(视图)的编写,Template(模板)的设计和Form(表单)的使用。...Django的通用视图可以减少开发的单调性,它抽象出一些视图开发中常用的代码和模式,这样就可以无需编写大量代码的情况下,快速编写出常用的视图函数。 ?...pass ① ListView:显示对象列表 用于展示一个 Model 里面的所有对象,也可以是其子集 (queryset) ,支持分页。...from django.views.generic import ListView from books.models import Publisher class PublisherList(ListView...): # 指明要操作的Model(展示 Publisher 的所有对象) model = Publisher # 模板 context model 的变量名,默认是 object_list

1.4K10

Django来敲门~第一部分【9.使用Django内置视图处理对象简化开发】

内置视图处理对象的定义 对于我们视图处理函数,从最原始的HttpResponse()来进行页面数据的输出,到render()函数进行模板页面的操作,已经是可以满足我们的需求了,但是Django赶脚还不够...,不够~所以提供了常规的一些页面视图对象对页面模板模板要展示的数据进行了封装处理。...常规情况下,对应页面要展示数据列表的视图,通过继承Djangodjango.views.generic.ListView对象来实现,页面要展示数据信息的视图,通过继承Djangodjango.views.generic.DetailView...我们可以源代码,看到各种操作的一些信息,官方注释用于使用对象数据来渲染详细信息页面的视图对象,继承的父类,也定义了各种属性字段用于控制单个对象数据的展示操作 以上两个视图类,都间接继承了View...从基础文件view.py,我们可以看到,各种视图模板的基础处理操作和视图类型的封装都有了简洁的定义,我们需要做的就是项目中,继承这些Django已经封装好的对象,快捷的完成项目的开发。

88530

Django自定义实现分页

1、分析和推导 1.1 当前页 1.2 起始位置和终止位置 1.3 添加按钮传递页码数 2、方法的封装 2.1 分页器类 2.2 视图函数 2.3 模板页面 前面的文章中分别介绍了drf框架中分页器的使用及...Django框架中分页器的用法,其重点在于视图函数和模板页面如何利用自带的分页器的相关参数进行数据传递和页面渲染 本文继续介绍分页器,即自定义分页器如何实现,其实也就是如何使用自定义的方式计算出和上面类似自带的分页器的相关参数值...1、分析和推导 分页的关键信息:当前页、每页展示多少条、起始位置、终止位置 1.1 当前页 思路:浏览器携带页码发送get请求,获取当前页信息。...i) book_queryset = book_list[start_page:end_page] return render(request, 'ab_pl.html', locals()) 前端模板页面接收...return render(request, 'booklist.html', locals()) 2.3 模板页面 模板页面渲染 <

93120

SweetAler弹框插件与分页器插件

html文件中导入插件 {% load static %} <...使用Django向数据库批量插入数据 在看分页器之前我们先批量向数据库插入一些数据,向数据库插入数据的方式有多种,这里的思路是先将数据放入一个列表,然后统一将数据一起写入数据库,这里使用Django...虽然上面我们手写的分页器也具备了一些简单的功能,但是比如上一页、下一页、首页、尾页等功能我们还没有添加,下面来了解一个自定义的分页器组件。...:param pager_count: 最多显示的页码个数 用法: queryset = model.objects.all() page_obj...默认为1 book_queryset = models.Book.objects.all()#查出所有的数据对象 all_count = book_queryset.count()#计算出数据总数 page_obj

1.3K20

DjangoListView超详细用法(含分页paginate)

开发环境: python 3.6 django 1.11 场景一 经常有从数据库获取一批数据,然后在前端以列表的形式展现,比如:获取到所有的用户,然后在用户列表页面展示。...针对这种常用场景,提供了一个更快速便捷的方式,那就是ListView,用法如下: from django.views.generic import ListView class UsersView(ListView...代码如下: from django.views.generic import ListView class UsersView(ListView): model = UserProfile...,前页面最好得分页展示呀,这怎么搞?...到此这篇关于DjangoListView超详细用法(含分页paginate)的文章就介绍到这了,更多相关DjangoListView用法内容请搜索ZaLou.Cn以前的文章或继续浏览下面的相关文章希望大家以后多多支持

1.7K10
领券