Django中的分页如何实现?分分合合总有时,久合必分,久分必合————————————————

本文探讨了分页技术在Django中的实现,包括全局和局部分页,以及自定义分页的方法。同时,文章分析了无限滚动与分页显示的优缺点,指出无限滚动适合用户消费信息流,而分页展示则适用于用户寻找特定信息的场景。最后,给出了Django前端和后端分页的代码示例。
摘要由CSDN通过智能技术生成

分页

分页(英语:Paging),是一种操作系统里存储器管理的一种技术,可以使电脑的主存可以使用存储在辅助存储器中的数据。操作系统会将辅助存储器(通常是磁盘)中的数据分区成固定大小的区块,称为“页”(pages)。当不需要时,将分页由主存(通常是内存)移到辅助存储器;当需要时,再将数据取回,加载主存中。相对于分段,分页允许存储器存储于不连续的区块以维持文件系统的整齐。分页是磁盘和内存间传输数据块的最小单位。
上面是存储的说明

所谓分页显示,也就是将数据库中的结果集,人为的分成一段一段的来显示

扩展

  • 无限滚屏

无限滚动允许用户通过无限滚动来浏览大量内容。这种技术会在你向下滚动的时候不断地更新页面。尽管这听起来很诱人,但这种技术并不是所有网站和APP都适用的解决方案。

优势1:用户参与和内容发现

当你使用滚动作为探索信息的主要方式时,用户会在你的网页上停留更长的时间,因此增加了用户参与。随着社交媒体的流行,大量的内容被消费;无限滚动为用户提供了一种浏览海量信息的有效方式,用户不需要等待页面的预先加载。

无限滚动基本是探索信息页面的必备特征。当用户没有特定要寻找的信息的时候,他们需要在浏览海量信息,并从中找到自己喜欢的内容。

优势2:滚动比点击更好

相比于点击滚动能带来更好的用户体验。鼠标的滚轮或触摸屏的存在让滚动比点击更快更简单。对于很长的连续性的内容,比如教程,滚动提供了更好的可用性,因为它无需与把文本切分到几个页面里展示。

优势3:滚动对移动设备很友好

屏幕越小,滚动越长。在移动设备浏览器中长浏览变得更有意义。移动设备的手势控制让滚动非常自然且容易使用。因此,无论用户使用什么设备,他们都享受到了一种真正的响应式体验。

劣势1:页面表现与设备资源

页面加载速度是好的用户体验的全部。许多研究表明加载速度慢会让用户最终离开你的网站,删除你的app,转化率降低。这对于使用无限滚动的产品来说是一个坏消息。用户往下滚动的越多,越多的内容就必须在同一页面中加载出来。最终,页面呈现出来的可能会是加载速度越来越慢。

另一个问题是用户的设备有着有限的空间。在许多无限滚动的网站上,尤其是那些有很多图片的网站,拥有有限空间的设备,比如iPad会因为其已经加载了许多内容而开始变得很慢。

劣势2:搜索和定位

无限滚动的另一个问题是,当用户在信息流中看到某一个点时,他们不能在某个位置放书签,方便他们过段时间再回到这个位置。如果他们离开了这个网站,他们将会失去他们的进度,不得不再次往下滚动到这个点。因为用户定位确切的位置,这引起了用户的不快和疑惑,伤害了用户体验。
劣势3:不相关的滚动条

另外一件讨厌的事情就是滚动条并不能反映出可得数据的实际数量。你会高兴地往下滚动,以为你正在接近底部,本质上讲这会不断诱惑你再往下滚动一点点,然后发现当你快到底部的时候,更多的结果又呈现出来。从可达性的角度讲,打破用户对滚动条的使用习惯是不好的。

劣势4:页脚缺失

页脚存在的理由:页脚包含了用户有时候需要的一些信息,比如当用户找不到某些信息或者需要额外的信息的时候,他们会去页脚寻找。但是,在无限加载页面中,当用户一接触底部的时就会有更多的数据加载出来,让页脚始终没有机会呈现在用户的视野中。

使用无限滚动的网站应该通过让页脚固定或在顶部或旁边等位置,展示页脚中那些链接的方式来保证页脚中的链接是用户可得的。

还有一种解决方式是使用一个加载更多的按钮来响应用户对更多内容的需求。只有当用户点击这个加载更多的按钮,新的内容才会加载出来。这样用户就可以比较容易地接触到页脚,不用一直滚动很久去查看你的页脚。

分页显示

分页是一种将内容分为好几个页面进行展示的用户界面形式。如果你往下滚动到一个页面的底部,看到一排数字——这排数字就是一个网站或app的分页。

优势1:好的转化

如果用户想在搜索结果中寻找一些特定的信息,而不是随意的浏览信息,使用分页导航会特别有帮助。
优势2:控制感

无限滚动就像一个无穷无尽的游戏——不管你滚动了页面多长,都感觉好像永远到达不了终点。当用户知道他们可获得结果的具体数量时,他们可以做出更加有把握的决定,而不是去刷一个无穷尽的页面。根据David Kieras人机交互心理学的研究:“到达一个终点给人一种控制感”。这个研究也阐明说,当用户得到有限的但保持相关的结果时,他们能较容易地确定所要寻找的东西是否在搜索结果中。

并且,当用户看到结果的数量时(当然这个数量不是无限的),他们将能够评估需要多少时间来找到他们想要的东西。

优势3:条目定位

拥有一个分页界面让用户在脑海中对特定内容有一个大概的定位。他们不需要知道特定内容确切在哪一页,但是他们会记得大概的位置,分页导航可以方便他们找到特定的内容。

用户有主动权来用分页导航来直接跳转到想要看的页面

分页展示适用于电商网站和app。当用户进行线上购物时,如果他们想要回头去找某个商品,他们可以找到这个商品继续购物。

劣势1:额外的操作

为了在分页界面中进入到下一页,用户得找到这个链接 (比如“下一页”),然后鼠标移动到上面,点击,等待新的页面加载出来。

这里的主要问题是,大部分网站在单个页面中只展示给用户非常有限的内容,用户想要浏览更多的内容时只能不断点击分页按钮。弥补这个不足,可以让页面长一点,同时又不牺牲加载速度,用户在每个页面中获取更多的内容,不需要太多次点击分页按钮。

什么时候使用无限滚屏或者分页展示?

无限滚动只在部分情况下是有效的。它最适合用户原创内容网站(Twitter,Facebook)或视觉(Pinterest,Instagram)的网站和app。

分页展示相对来说则是一种保险的选择,对于用户需要完成特定目标或任务的网站和app,分页展示是一个好的解决方案。谷歌产品的体验印证了以上的观点。谷歌图片采用了无限滚动,因为相对于文本,用户可以更快地浏览和操作图片。阅读搜索结果就需要花费更长的时间。这就是为什么谷歌搜索结果仍然使用的是更加传统的分页展示形式。

总结

设计师在选择无限滚动和分页展示这两种信息呈现方式之前需要权衡二者的优势和劣势。最终的选择取决于设计情境和内容的传递方式。一般而言,无限滚动适合像Twitter这样的产品,用户消费着无尽的信息流,不想要寻找某个具体的东西。而分页界面对搜索结果页面来说是非常的,因为用户在寻找着特定的信息,用户看过的信息的位置很重要。

Django 从分页到放弃》》》》》

#导包 第一种

from django.core.paginator import Paginator,PageNotAnInteger,EmptyPage

class Index(View):
    def get(self,request):
#1.查询所有
	data = User.objects.all()

#判断用户是否传回页码 默认返回第一页
	 page_num = request.GET.get('page_num')
	 if not page_num:
            page_num = 1 # 用户不传页码,默认返回第一页

#2.切蛋糕 分割页面
 # 1. 切蛋糕
        try:
            pageinator = Paginator(data, 3)
            users = pageinator.page(page_num)  # EmptyPage
        except PageNotAnInteger: # 页码不正确
            users = pageinator.page(1)
        except EmptyPage: # 页码为空,太大的页码,或者页码为负数
            users = pageinator.page(1)
        return render(request, 'index.html',locals())
  • 前端完整代码 :
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
{% for user in users %}
    <p>{
  { user.name }}
        {% if user.path %}
            <img style="width: 20px;height: 20px" src="{
    { user.path.url }}" alt="{
    { user.path.url }}">
        {% else %}
            <img style="width: 20px;height: 20px" src="/avator/avator/default.jpg">
        {% endif %}
    </p>
    <p>

    </p>
{% endfor %}
{% if users.has_previous %}
    <a href="/?page_num={
    { users.previous_page_number }}">上一页</a>
{% endif %}
{% if users.has_next %}
    <a href="/?page_num={
    { users.next_page_number }}">下一页
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值