首页 > 编程语言 >Python基础day63 Django分页和cookie、session

Python基础day63 Django分页和cookie、session

时间:2023-08-09 21:35:25浏览次数:33  
标签:浏览器 Python 用户 Django day63 session cookie page

推导分页的原理

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

分页中需要的几个参数:
1. 总数据有多少条
2. 每页展示多少条数据(自己规定的20)
3. 一共展示多少页
4. 总页数 = 总数据量 / 每页展示多少条数据
5. 当前第几页(前端传过去的)

总页数怎么算?

总条数    每页展示的数据    页数
100      10          10
101      10          11
99        10             10
...
divmod(100, 10)

分页类的使用

# 以后我们针对像分页类这种第三方工具,我们一般在Django中创建一个utils文件夹保存
from utils.mypage import Pagination
current_page =  request.GET.get('page')
try:
    current_page = int(current_page)
except Exception:
        current_page = 1

user_list  = models.UserInfo.objects.all()
all_count = user_list.count()
page_pbj = Pagination(current_page, all_count, per_page_num=10)

user_list = user_list[page_pbj.start:page_pbj.end]

page_html = page_pbj.page_html()
return render(request, 'index.html', locals())

cookie和session的介绍(重要)

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

背景信息:

  1.早期的时候一些网站都是静态网站,不需要登录,比如:新闻类、博客等

  2.随着技术的发展以及用户的要求,诞生了诸如支付宝、淘宝、京东等电商平台,这些网站就必须要求客户登录,如果不登录,商家不知道是谁买的东西。登录的目的其实就是商家可以识别这个用户是谁

  3.诞生了保存用户状态的技术:cookie和session

以登录功能为例:

  分析cookie的原理

  进入淘宝网站,第一次肯定是需要登录的,如果登录成功,淘宝网站不保存你的用户信息,意味着你下次再次访问淘宝的时候还需要重新登录。每一次访问淘宝的页面都需要登录就会非常影响用户体验。

  如何解决上述问题?

  这个时候就用到了cookie,比如你第一次登录成功之后,Django后端让浏览器把你的用户名和密码保存在浏览器中,你下次在访问淘宝页面的时候,浏览器会自动把他之前保存的用户名和密码一起提交到Django后端,Django后端每次都拿着浏览器发过来的用户名和密码再次做验证。

  上述的做法有没有什么问题? 有

  数据保存在浏览器上面,很明显的问题是:数据不够安全


  如何解决上述数据不安全的问题

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

  session的原理:
  以登录功能为例:
  第一次登录成功之后,把用户信息保存在后端,其中,django默认是把用户信息保存在数据表中了 django_session表中了

1. 先生成一个随机字符串
2. 把用户的信息保存在django_session表中
session_key    session_data    expire_date
随机字符串1    用户信息1
随机字符串2    用户信息2
随机字符串3    用户信息3
随机字符串4    用户信息4
随机字符串5    用户信息5
3. Django后端会把随机字符串告诉浏览器保存起来
4. 以后用户每次访问页面的时候,浏览器每次都要把随机字符串提交过来,Django后端拿到随机字符串,去django_session表中查询数据,如果查到了,就说明以前登录成功了,如果查不到,就说明还没有登录

select * from django_session where session_key = ''

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

怎么解决这个问题
需要用到token
token就是一个随机字符串------->保存着用户信息---------->字符串返回给前端------>每次都把token提交过来------>后端做验证.

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

PS:

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

 

Django操作cookie

# 在Django这种如何使用cookie、

三板斧:
return HttpResponse

return render

return redirect


obj = HttpResponse
return obj

obj = render
return obj

obj = redirect
return obj

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

 

标签:浏览器,Python,用户,Django,day63,session,cookie,page
From: https://www.cnblogs.com/zfq132/p/17618026.html

相关文章

  • 【总结一下|PTA】浙大版《Python 程序设计》题目集
    前言Hello!小伙伴!非常感谢您阅读海轰的文章,倘若文中有错误的地方,欢迎您指出~ 自我介绍ଘ(੭ˊᵕˋ)੭昵称:海轰标签:程序猿|C++选手|学生简介:因C语言结识编程,随后转入计算机专业,有幸拿过一些国奖、省奖…已保研。目前正在学习C++/Linux/Python学习经验:扎实基础+多做笔记+多......
  • Centos7安装Python3.8
    Centos7安装Python3.8Centos7安装Python3.8安装编译相关工具yum-ygroupinstall"Developmenttools"yum-yinstallzlib-develbzip2-developenssl-develncurses-develsqlite-develreadline-develtk-develgdbm-develdb4-devellibpcap-develxz-develyum-yin......
  • python语言--------csv模块将txt文件转换为表格csv格式
    上代码:importcsvcsvFile=open("C:/Users/Administrator/Desktop/1.csv",'w',newline='',encoding='utf-8')writer=csv.writer(csvFile)csvRow=[]f=open("C:/Users/Administrator/Desktop/np.txt",'r'......
  • python 实现 pdf 转为图片
    1importfitz2importos3fromPILimportImage45defconvert_pdf2img(file_relative_path):67page_num=18filename=file_relative_path.split('.')[-2]9ifnotos.path.exists(filename):10os.makedirs(filen......
  • oFono/dbus-python环境搭建以及简单认识
    关键词:D-Bus、oFono、dbus-python、ofonod等等。1.oFono环境搭建(Buildroot+QEMU)和启动1.1Buildroot配置ofonod+dbus-python配置oFono:Targetpackages->Networkingapplication->connman->enableofonosupport使能Python3:Targetpackages->Interpreterlanguage......
  • Python用GARCH对ADBL股票价格时间序列趋势滚动预测、损失、可视化分析
    全文链接:https://tecdat.cn/?p=33398原文出处:拓端数据部落公众号金融市场的股票价格时间序列分析一直以来都是投资者和研究者关注的主题之一。准确预测股票价格的趋势对于制定有效的投资策略和决策具有重要意义。因此,许多研究人员使用各种统计方法和模型来分析和预测股票价格的......
  • Python | 函数、数据容器
    1.函数函数:是组织好的,可重复使用的,用来实现特定功能的代码段。1.1简单案例重复使用计算字符串的长度str1="heystar"str2="python"str3="abcd"count=0for_instr1:count+=1print(f"字符串{str1}的长度是:{count}")count=0for_instr2:coun......
  • Django REST framework
    简介在Django框架基础之上,进行二次开发用于构建RestfulAPI简称为DRF框架或RESTframework 特性提供了强大的Serialize序列化器,可以高效进行序列化与反序列化操作提供了极为丰富的类视图、Mixin扩张类、ViewSet视图集提供了直观的We......
  • django的queryset和objects对象
    1.queryset是查询集,就是传到服务器上的url里面的内容。Django会对查询返回的结果集QerySet进行缓存,这里是为了提高查询效率。  也就是说,在你创建一个QuerySet对象的时候,Django并不会立即向数据库发出查询命令,只有在你需要用到这个QuerySet的时候才回去数据库查询。2.Objects......
  • Python潮流周刊#2:Rust 让 Python 再次伟大
    这里记录每周值得分享的Python及通用技术内容,部分为英文,已在小标题注明。(本期标题取自其中一则分享,不代表全部内容都是该主题,特此声明。)文章&教程1、Python修饰器的函数式编程介绍了装饰器的实现原理、带参装饰器、多装饰器、类装饰器和几个典型的示例。文章发布于2014年,代码用......