【Django框架】——25 Django视图 07 状态保持Session

news/2023/6/6 23:22:10

在这里插入图片描述

在这里插入图片描述

文章目录

      • 1.session流程图
      • 2.session语法与案例
      • 3.session配置


cookie不安全,会把所有敏感数据放到浏览器保存。

session是把敏感数据存到自己的服务器中给浏览器一把钥匙就行了(是基于cookie完成的)。

Django 提供对匿名会话(session)的完全支持。这个会话框架让你可以存储和取回每个站点访客任意数据。它在服务器端存储数据, 并以cookies的形式进行发送和接受数据。

1.session流程图

  • 创建一把随机字符串 钥匙。

  • 把随机字符串和请求数据键值对组成的数据 放到django-session表里去 (绿色部分都是django的中间件实现的)。

  • 将钥匙按照cookie方式传给浏览器(浏览器只保留钥匙)。

image.png

2.session语法与案例

# 1、设置Sessions值request.session['session_name'] ="admin"
# 2、获取Sessions值session_name = request.session["session_name"]
# 3、删除Sessions值del request.session["session_name"]
# 4、flush()# 删除当前的会话数据并删除会话的Cookie。这用于确保前面的会话数据不可以再次被用户的浏览器访问def s_login(request):if request.method == "GET":return render(request, "login.html")else:user = request.POST.get("user")pwd = request.POST.get("pwd")try:user_obj = User.objects.get(user=user,pwd=pwd)# 写session# 1、中间件会自己创建随机字符# 2、将随机字符串作为session-key 将session作为session-data 插入到djang-session表中(自带的)  # 3、session_id和随机字符串组成键值作为cookie返回客户端request.session["is_login"] = Truerequest.session["username"] = user_obj.userreturn redirect("/s_index/")except:return redirect("/s_login/")def s_index(request):# 读session# 1、去session_id的钥匙# 2、去django-session表中查询符合条件的记录# 3、将取出的session-data.get('is_login')is_login = request.session.get("is_login")if is_login:# 登录成功过username = request.session.get("username")return render(request, "index.html", {"user": username})else:# 登录没成功return redirect("/s_login/")
'''
shop.html:
<p>
客户端最后一次访问时间:{{ last_time|default:"第一次访问" }}
</p>
<h3>商品页面</h3>
'''def shop(request):last_time = request.session.get("last_time")now = datetime.datetime.now().strftime("%Y-%m-%d %X")request.session["last_time"] = nowreturn render(request, "shop.html", {"last_time": last_time})# 退出登录 删除session
def s_logout(request):# 暴力删除会删除整条记录 访问时间也没有了# request.session.flush()# del比较友好 只删除指定的数据删除del request.session["username"]del request.session["is_login"]return redirect("/s_login/")session 在服务器端,cookie 在客户端(浏览器)session 默认被存在在服务器的一个数据库(不是内存)session 的运行依赖 session id,而 session id 是存在 cookie 中的.session 可以放在 文件、数据库、或内存中都可以。用户验证这种场合一般会用 session

3.session配置

# Django默认支持Session,并且默认是将Session数据存储在数据库中,即:django_session 表中。
# 配置 settings.pySESSION_ENGINE = 'django.contrib.sessions.backends.db'  # 引擎(默认)SESSION_COOKIE_NAME = "sessionid"  # Session的cookie保存在浏览器上时的key,即:sessionid=随机字符串(默认)
SESSION_COOKIE_PATH = "/"          # Session的cookie保存的路径(默认)
SESSION_COOKIE_DOMAIN = None        # Session的cookie保存的域名(默认)
SESSION_COOKIE_SECURE = False       # 是否Https传输cookie(默认)
SESSION_COOKIE_HTTPONLY = True      # 是否Session的cookie只支持http传输(默认)
SESSION_COOKIE_AGE = 1209600        # Session的cookie失效日期(2周)(默认)
SESSION_EXPIRE_AT_BROWSER_CLOSE = False  # 是否关闭浏览器使得Session过期(默认)
SESSION_SAVE_EVERY_REQUEST = False  # 是否每次请求都保存Session,默认修改之后才保存(默认)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.exyb.cn/news/show-4559044.html

如若内容造成侵权/违法违规/事实不符,请联系郑州代理记账网进行投诉反馈,一经查实,立即删除!

相关文章

基于深度学习 利用目标检测的方法定位瑕疵位置

利用目标检测的方法定位瑕疵位置 通过语义分割的方法分割瑕疵&#xff08;使用传统方法&#xff0c;如二值化等方法分割亦可&#xff09; 图像分类的方法判断类别 问题&#xff1a;检测手机屏幕表面的瑕疵&#xff0c;在图中画出瑕疵位置并标明瑕疵种类。Screen task该数据集…

基于DeepLabV3Plus实现质检划痕图像分割识别系统

基于AI为产品质检赋能已经产生了许多有意义的应用&#xff0c;在我前面的一些文章里面也有助力产品生产质检相关的项目&#xff0c;但大都是基于检测模型开发的&#xff0c;这里主要是想基于图像分割的方式来实现产品质检&#xff0c;本文主要是基于DeepLabV3Plus模型实现划分分…

3D模型欣赏:甲壳虫 汽车 材质处理细致 划痕真实

本作品是由3D建模师 Deepak_Ransubhe 创作的一个甲壳虫汽车模型&#xff0c;创作者对该作的材质处理细致&#xff0c;划痕真实&#xff0c;值得参考 或许你还想了解这些内容&#xff1a; 文章推荐阅读 【 学习企鹅圈&#xff1a;1072172722 】 &#xff1a; 3D游戏建模前景如…

深度学习正确落地生钱姿势是什么?步骤是什么?

准确的基本事实和具有统计意义的数据。在制造环境中验证深度学习解决方案 时&#xff0c;这些要素构成唯一可靠的基础。 典型项目阶段 深度学习项目通常包括四个项目阶段&#xff1a;规划、数据收集 及基本事实标记、优化以及工厂验收测试&#xff08;FAT&#xff09;。与 每个…

论文精读:基于深度学习的表面缺陷检测方法综述

摘要&#xff1a; 基于表面缺陷检测方法&#xff0c;根据数据标签的不同将其分为全监督学习模型方法、无监督学习模型方法和其他方法。细分归类&#xff0c;对比分析&#xff0c;总结每种方法优缺点&#xff0c;应用场景。 Introduction 表面缺陷检测是利用机器视觉设备获取图…

复杂场景下的缺陷检测——深度学习

随着自动化技术的快速发展&#xff0c;在工业生产中很多需要人工操作的环节逐渐转由机器完成&#xff0c;工业生产自动化也将越来越多的工人们从枯燥乏味的工作中解放出来&#xff0c;让他们去发挥更大的价值。 产品表面缺陷检测是工业生产中的重要环节&#xff0c;是产品质量…

瓷砖 划痕检测matlab,瓷砖划痕,不是质量问题!六种绝招教你修复!

原标题&#xff1a;瓷砖划痕&#xff0c;不是质量问题&#xff01;六种绝招教你修复&#xff01;瓷砖是最好的装修材料&#xff0c;而铺设地面或内墙都是主要被清洁的对象&#xff0c;平常不很被重视的细小瓷砖划痕就会尽收眼里&#xff0c;于是就会有人抱怨&#xff0c;说是瓷…

瓷砖 划痕检测matlab,六招教你修复瓷砖划痕,分分钟解决问题!

原标题&#xff1a;六招教你修复瓷砖划痕&#xff0c;分分钟解决问题&#xff01;瓷砖是最好的装修材料&#xff0c;可以铺设地面或内墙&#xff0c;于是平常不被重视的细小瓷砖划痕就会尽收眼底&#xff0c;因此有人抱怨&#xff0c;说是瓷砖的质量不好才导致划痕的出现&#…