django中cookie与session的使用

发布于:2024-12-19 ⋅ 阅读:(10) ⋅ 点赞:(0)

一、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/


网站公告

今日签到

点亮在社区的每一天
去签到