Django分页功能

实现Django分页功能

平时在一些网站上能看到下面的分页功能,内容过多只能在每页显示20条左右,就像下面这个图片一样,


image.png

下面是我练习的代码仅供参考,没步骤都有详细的介绍!
首先导入的是Paginator类,
Paginator 类的作用是将我们需要分页的数据分割成若干份。当我们实现化一个 Paginator 类的实例时,需要给 Paginator 传入两个参数。第一个参数是数据源,可以是一个列表、元组、以及查询结果集 QuerySet。第二个参数需要传入一个整数,表示每页显示数据条数。

  def index(request):
      object_list = Post.objects.all()
     # 获取所有的文章
      paginator = Paginator(object_list, 3)
      #每页的文章数目为3个
      page = request.GET.get('page')
      #得到第几页
    try:
        posts = paginator.page(page)
      #正常显示第几页
    except PageNotAnInteger:
       #数据烂输的话显示第1页
        posts = paginator.page(1)
    except EmptyPage:
      #大于总文章的话显示的话显示最后一页
        posts = paginator.page(paginator.num_pages)
    return render(request, 'index.html', {'page': page, 'posts': posts})
      #将数据传入那个网页
<form action="." method="post">
    {% csrf_token %}
    #防止跨站请求
    {{ form.as_p }}
    <p><input type="submit" value="注册"></p>
</form>
使用django自带的表单实现功能,

直接复制复制粘贴就好

{% if page.has_previous %}
    <a href="?page={{ page.previous_page_number }}">上一页</a>
{% endif %}
<span class="current">
第 {{ page.number }} 页 ,共 {{ page.paginator.num_pages }}页

    {% for pg in page.paginator.page_range %}
        <a href="?page={{ pg }}">{{ pg }}</a>
    {% endfor %}
</span>
{% if page.has_next %}
    <a href="?page={{ page.next_page_number }}">下一页</a>
{% endif %}

大家可以参考下我的思路,如果有错误大家帮我指出来。谢谢

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Django已为开发者内置了分页功能,只需调用Django内置分页功能的函数即可实现数据分页功能。我们在Djang...
    libdream阅读 637评论 0 3
  • Django中已经实现了很多功能,基本上只要我们需要的功能,都能够找到相应的包。要在Django中实现分页显示,只...
    leyu阅读 580评论 0 2
  • 成果: 代码:在之后的步骤中在相信说明吧 步骤: 1.这个mongoengine需要pip安装的pip insta...
    泠泠七弦客阅读 4,247评论 2 0
  • 1 核心类Paginator的使用 参考资料:https://www.cnblogs.com/kongzhagen...
    小码码阅读 281评论 0 0
  • Django提供了一些类来帮助你管理分页的数据 -- 也就是说,数据被分在不同页面中,并带有“上一页/下一页”标签...
    yunpiao阅读 1,284评论 0 0

友情链接更多精彩内容