Django---cookie和session

Django的cookie和session

一、cookie

二、session

回到顶部

一、cookie

  1.特点

    1. cookie数据保存在客户端,以key-value存储

    2. cookie有过期时间,默认关闭浏览器过期

    3. cookie是基于域名安全的,浏览器在访问一个服务器,只会把跟这个服务器相关的cookie发送过去

  2.设置

    response = make_response('响应内容')

    response.set_cookie('<key>', '<value>', max_age='<过期时间: s>')  

  3.获取

    request.COOKIES.get('<key>')

  4.删除

    response.delete_cookie('<key>')

二、session

  1.特点

    1. session数据保存在服务器,以key-value存储

    2. session依赖于cookie,每个客户端的session信息标识保存在客户端cookie中

    3. session也有过期时间,flask开启session过期时间之后默认30天,django中session过期时间默认2周

  2.设置

    request.session['<key>'] = '<value>' 

  3.获取

    request.session.get('<key>')

  4.存储方式

    1.关系数据库

      默认存储方式:django_session

      SESSION_ENGINE='django.contrib.sessions.backends.db'

    2.缓存

      注意:Django框架缓存默认是服务器内存

      SESSION_ENGINE='django.contrib.sessions.backends.cache'

    3.混合存储

      SESSION_ENGINE='django.contrib.sessions.backends.cached_db'

    4. 将session信息存储到redis中

# 设置Django框架缓存的位置(如果不做设置,默认浏览器缓存)
# 此处要把Django框架的缓存改为redis
CACHES = {
    "default": {
        "BACKEND": "django_redis.cache.RedisCache",
        # 设置redis数据库地址
        "LOCATION": "redis://127.0.0.1:6379/1",
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
        }
    },
    "session": {
        "BACKEND": "django_redis.cache.RedisCache",
        # 设置redis数据库地址
        "LOCATION": "redis://127.0.0.1:6379/2",
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
        }
    },
}

# 设置将Django框架的session存储到缓存中,上面已经把Django框架的缓存改为类redis
# 所以session就储存到redis中 
SESSION_ENGINE = "django.contrib.sessions.backends.cache"
# 设置session存储空间的名称
SESSION_CACHE_ALIAS = "default"
原文地址:https://www.cnblogs.com/Mryang123/p/10277611.html