分页器

YeeQX / 2023-08-10 / 原文

推导分页器原理

分页:当我们要展示的数据特别多的时候,一页展示不完,这个时候我们需要把展示的数据分成多页展示。

分页需要的几个参数:

1、总数据有多少条

2、每页展示多少条数据

3、一共展示多少页

4、总页数=总数据量/每页展示多少条数据

5、当前第几页(前端传过去的)

推导,了解不用掌握代码:

后端:

 前端:

 

分页类的使用

分页器封装代码链接:13-Django高级之-分页器 (yuque.com)

代码详情:

当我们使用非django内置的第三方功能活着组件代码的时候,我们一般在Django中创建一个utils文件夹来保存,在该文件夹内对模块进行功能性划分

  untils可以在每一个应用下创建,具体结合实际情况

我们到了后期封装代码的时候不再局限于函数,是朝面向对象去封装

我们自定义的分页器是基于bootstrap样式来的 所以你需要提前导入bootstrap
bootstrap 版本 v3
jQuery 版本 v3

后端:

 

cookie和session的介绍

HTTP协议的特性之一:无状态

背景信息:

1. 早期的时候一些网站都是静态网站,不需要登录,比如:新闻类、博客等
2. 随着技术的发展以及用户的要求,诞生了诸如支付宝、淘宝、京东等电商网站,这些网站就必须要求用户登录,如果不登录,上家怎么知道是谁买的东西? 登录的目的其实就是上架可以识别这个用户是谁
3. 诞生了保存用户状态的技术:cookie和session

登录功能为例:

  cookie的原理:

    以淘宝为例,当进入淘宝网页,第一次是需要登录的,如果登录成功,淘宝不保存用户信息,下次访问就需要重新登录,每一次访问页面都要登录,用户体验感就会很差

  为了解决上述问题就利用到了cookie,比如第一次登录成功,django后端就让浏览器把用户名和密码保存在浏览器中,下次访问淘宝页面时候,浏览器会自动把之前保存的用户名和密码再次验证。

  上述做法,数据会不够安全

解决不安全问题,是做优化,把原本存在浏览器上的数据存到后端,就称之为session,

session解决了cookie数据不安全问题

session的原理:

  以登录为例:  

    第一次登录成功之后,把用户信息保存在后端,其中,django默认是把用户信息保存在数据表中。(django_session表中)

1、先生成一个随机字符串

2、把用户信息保存在django_session表中

 

3、django后端会把随机字符串告诉浏览器保存起来

4、以后用户每次访问页面的时候,浏览器每次把随机字符串提交过来,django后端拿到随机字符串,去django_session表中查询数据,如果查到了就说明以前登录成功了,如果查不到,就说明还没有成功。

select * from django_session where session_key = ''

 


# 如果都把用户信息保存在django_session表中,有没有其他问题?
最大的问题就是数据量一旦很大,查询就是致命的

解决这个问题:

需要用到token,token就是随机字符串——保存用户信息——字符串返回给前端——每次都把token提交过来——后端做验证。

加密和解密都是后端做的,前端只需要每次把这个串来回传递就行了

跟面试相关的:
1. 保存在浏览器上的数据都称之为是cookie
2. session是保存在服务端的
3. session的数据相对更加安全,cookie不够安全
4. session是基于cookie工作的? 对还是不对? 对
5. django让浏览器保存cookie,用户有权可以设置浏览器不保存
6. session离开cookie一定就不能工作了,对还是不对?

 

Django操作cookie

obj = HttpResponse
return obj

obj = render
return obj

obj = redirect
return obj

# 操作cookie的时候,就用到了这个obj对象

案例: