The use of django-session --- database, cache type

Session is supported by default in Django, and 5 types of Session are provided internally for developers to use:

  • database (default)
  • cache
  • document
  • cache + database
  • encrypted cookie

1. Database Session

Django默认支持Session,并且默认是将Session数据存储在数据库中,即:django_session 表中。

 
a. 配置 settings.py
 
     SESSION_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,默认修改之后才保存(默认)
 
b. use
 
def  index(request):
         # 获取、设置、删除Session中数据
         request.session[ 'k1' ]
         request.session.get( 'k1' , None )
         request.session[ 'k1' =  123
         request.session.setdefault( 'k1' , 123 # 存在则不设置
         del  request.session[ 'k1' ]
 
         # 所有 键、值、键值对
         request.session.keys()
         request.session.values()
         request.session.items()
         request.session.iterkeys()
         request.session.itervalues()
         request.session.iteritems()
 
 
         # 用户session的随机字符串
         request.session.session_key
 
         # 将所有Session失效日期小于当前日期的数据删除
         request.session.clear_expired()
 
         # 检查 用户session的随机字符串 在数据库中是否
         request.session.exists( "session_key" )
 
         # 删除当前用户的所有Session数据
         request.session.delete( "session_key" )
 
         request.session.set_expiry(value)
             *  如果value是个整数,session会在些秒数后失效。
             *  如果value是个datatime或timedelta,session就会在这个时间后失效。
             *  如果value是 0 ,用户关闭浏览器session就会失效。
             *  如果value是 None ,session会依赖全局session失效策略。

2. Cache Session

 

  a. 配置 settings.py

 

 

     SESSION_ENGINE  =  'django.contrib.sessions.backends.cache'   # 引擎

 

     SESSION_CACHE_ALIAS  =  'default'                             # 使用的缓存别名(默认内存缓存,也可以是memcache),此处别名依赖缓存的设置

 

 

 

 

 

     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,默认修改之后才保存

 

b. 使用

 

     同上

 

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325115939&siteId=291194637