我们知道HTTP协议是无状态协议,也就是说每个请求都是独立的!无法记录前一次请求的状态。但HTTP协议中可以使用Cookie来完成会话跟踪!在Web开发中,使用session来完成会话跟踪,session底层依赖Cookie技术。

1.cookie

Cookie翻译成中文是小甜点,小饼干的意思。在HTTP中它表示服务器送给客户端浏览器的小甜点。其实Cookie是key-value结构,类似于一个python中的字典。

随着服务器端的响应发送给客户端浏览器。然后客户端浏览器会把Cookie保存起来,当下一次再访问服务器时把Cookie再发送给服务

 

 cookie语法

# (1) 设置cookie:
res = HttpResponse(...) 或 rep = render(request, ...) 或 rep = redirect() 
res.set_cookie(key,value)
res.set_signed_cookie(key,value,salt='加密盐') 
# (2) 获取cookie:
request.COOKIES 
request.get_signed_cookie()
# (3) 删除cookie
response.delete_cookie("cookie_key")

 

2.session

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

 

 

 2.1 语法

# 1、设置Sessions值
       request.session['session_name'] ="admin"
# 2、获取Sessions值
       session_name = request.session["session_name"]
# 3、删除Sessions值
       del request.session["session_name"]

 

2.2 session配置

在配置文件settings.py中设置

  • 文件版
    # session
    SESSION_ENGINE = 'django.contrib.sessions.backends.file'
    SESSION_FILE_PATH = 'xxxx' # 文件路径
    
    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 = True  # 是否每次请求都保存Session,默认修改之后才保存
  • 数据库版【默认】
    # session
    SESSION_ENGINE = 'django.contrib.sessions.backends.db'
  • 缓存版
    # session
    SESSION_ENGINE = 'django.contrib.sessions.backends.cache'
    SESSION_CACHE_ALIAS = 'default' # 缓存

     

posted on 2022-11-17 12:38  阿明明  阅读(29)  评论(0)    收藏  举报