当前位置: 首页 > article >正文

django中cookie与session的使用

一、cookie

  1. cookie由服务器生成 ,存储在浏览器中的键值对数据,具有不安全性,对应敏感数据应该加密储存在服务端
  2. 每个域名的cookie相互独立
  3. 浏览器访问域名为A的url地址,会把A域名下的cookie一起传递到服务器
  4. cookie可以设置过期时间

django中设置cookie:

from django.http import HttpResponse

# 接收路由2个参数,一个key, 一个value
def SetCookie(request, key, value):
    response = HttpResponse()
    response.set_cookie(key, value, max_age=60 * 60)
    return response

注:

max_age:

默认为None(关闭浏览器时删除Cookie)

单位秒:60*60 表示3600秒,即1小时

django中获取cookie:

from django.http import HttpResponse
# 接收路由的key进行查询返回数据
def GetCookie(request,key):
    value = request.COOKIES.get(key)
    return HttpResponse(value)

路由配置:

from .CookieApiView import SetCookie, GetCookie

urlpatterns = [
      re_path('set_cookie/(.+)/(.+)', SetCookie, name="set_cookie"),
      re_path('get_cookie/(.+)', GetCookie, name="get_cookie"),
]

cookie测试:

设置: http://127.0.0.1:8000/set_cookie/username/name1

获取: http://127.0.0.1:8000/get_cookie/username

二、Session

  1. Ssession基于cookie
  2. Session把敏感的数据以加密的方式保存在服务器的数据库中
  3. Session也可设置过期时间

session设置:

request.session[key]=value
# 设置过期时间,默认过期时间是2周
request.seesion.set_expiry(60*60)

session获取:

value=request.seesion.get(key)

注: 如果没有这个key,返回空

清空session表中所有数据:

request.seesion.flush()

用途:

这个函数用于刷新会话,即清空会话中的数据,但保留会话ID。这通常用于确保会话数据不会累积,也不会被滥用。

注意事项:

这个方法会删除当前会话中的所有数据,但不会删除会话的cookie。这意味着会话ID会保留,但session会话数据会被清空。

清理sessionId对应数据:

request.seesion.clear()
用途:
  • 这个函数用于完全清除当前会话中的所有数据。通常在用户注销或需要重置会话时使用。
注意事项:
  • 使用 clear()方法会删除会话中的所有数据,包括用户ID、登录状态等。因此,在调用这个方法之前,请确保这是你想要的操作。

django中session配置

django中session数据存放在初始化下面这个应用时生成的数据表django_session中:

INSTALLED_APPS = [
    'django.contrib.sessions',

]

三个字段示例: seesion_key、seesion_data、expirer_date

全局模块配置

INSTALLED_APPS = [
    'django.contrib.sessions',
]

视图配置

from django.http import HttpResponse

def SetSession(request, key, value):
    request.session[key] = value
    return HttpResponse("session设置成功")

def GetSession(request,key):
    value = request.session.get(key)
    return HttpResponse(value)

# 清空sessionID数据
def ClaerSession(request):
    request.session.clear()
    return HttpResponse("session清理成功")
# 清空session表中所有数据
def FlushSession(request):
    request.session.flush()
    return HttpResponse("session表中数据清理成功")

3.路由配置

from .SessionApiView import SetSession, GetSession, ClaerSession, FlushSession

urlpatterns = [
    re_path('set_session/(.+)/(.+)', SetSession, name="set_session"),
    re_path('get_session/(.+)', GetSession, name="get_session"),
    re_path('flush_session/', FlushSession, name="flush_session"),
    re_path('clear_session/', ClaerSession, name="clear_session"),
]

测试

设置: http://127.0.0.1:8000/set_session/username/name1

获取: http://127.0.0.1:8000/get_session/username

清理sessionId对应数据: http://127.0.0.1:8000/clear_session/

清空session表中所有数据: http://127.0.0.1:8000/flush_session/


http://www.kler.cn/a/447334.html

相关文章:

  • 多个Echart遍历生成 / 词图云
  • 【开源项目】数字孪生轨道~经典开源项目数字孪生智慧轨道——开源工程及源码
  • Mybatis-plus-Join--分页查询
  • 深入了解Python模拟负载均衡器:将请求高效分发至多个服务器
  • 【Mongo工具】Mongo迁移工具之Mongo-shake
  • 整合 Knife4j 于 Spring Cloud 网关:实现跨服务的 API 文档统一展示
  • 【背景信息】Proxmox Virtual Environment 创建AD域实现统一身份认证(一)
  • Android 搭建AIDL Client和Server端,双向通信
  • OpenCV实现实时人脸检测和识别
  • Python 图像处理领域的十一个基础操作
  • 聚观早报 | 百度回应进军短剧;iPad Air将升级OLED
  • 7-2 排序
  • Android音频中常用的BT Format和Profile介绍
  • Excel智能公式,根据日期一键生成唯一订单编号
  • 【python因果库实战9】TMLE - 目标最大似然估计2
  • 如何使用 Python 连接 SQLite 数据库?
  • MicroPython+ESP32:五.PC远程控制LED灯
  • 36.2 内置的k8s采集任务分析
  • AI呼入机器人详解
  • ubuntu 执行sh脚本出现报错:source:not found
  • 界面控件DevExpress v24.2.3全新发布——正式支持.NET 9
  • 算法—回文链表
  • Docker的网络
  • 大语言模型的常用微调方法
  • 单片机上电后程序不运行怎么排查问题?
  • Soul Preserver