Django中默认支持Session,其内部提供了5种类型的Session供开发者使用:

数据库(默认)

缓存

文件

缓存+数据库

加密cookie

1、数据库Session

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

a. 配置 settings.py

  1. SESSION_ENGINE = 'django.contrib.sessions.backends.db' # 引擎(默认)
  2. SESSION_COOKIE_NAME "sessionid" # Session的cookie保存在浏览器上时的key,即:sessionid=随机字符串(默认)
  3. SESSION_COOKIE_PATH "/" # Session的cookie保存的路径(默认)
  4. SESSION_COOKIE_DOMAIN = None # Session的cookie保存的域名(默认)
  5. SESSION_COOKIE_SECURE = False # 是否Https传输cookie(默认)
  6. SESSION_COOKIE_HTTPONLY = True # 是否Session的cookie只支持http传输(默认)
  7. SESSION_COOKIE_AGE = 1209600 # Session的cookie失效日期(2周)(默认)
  8. SESSION_EXPIRE_AT_BROWSER_CLOSE = False # 是否关闭浏览器使得Session过期(默认)
  9. SESSION_SAVE_EVERY_REQUEST = False # 是否每次请求都保存Session,默认修改之后才保存(默认)

b. 使用

  1. def index(request):
  2. # 获取、设置、删除Session中数据
  3. request.session['k1']
  4. request.session.get('k1',None)
  5. request.session['k1'] = 123
  6. request.session.setdefault('k1',123) # 存在则不设置
  7. del request.session['k1']
  8. # 所有 键、值、键值对
  9. request.session.keys()
  10. request.session.values()
  11. request.session.items()
  12. request.session.iterkeys()
  13. request.session.itervalues()
  14. request.session.iteritems()
  15. # 用户session的随机字符串
  16. request.session.session_key
  17. # 将所有Session失效日期小于当前日期的数据删除
  18. request.session.clear_expired()
  19. # 检查 用户session的随机字符串 在数据库中是否
  20. request.session.exists("session_key")
  21. # 删除当前用户的所有Session数据
  22. request.session.delete("session_key")
  23. request.session.set_expiry(value)
  24. * 如果value是个整数,session会在些秒数后失效。
  25. * 如果value是个datatimetimedeltasession就会在这个时间后失效。
  26. * 如果value0,用户关闭浏览器session就会失效。
  27. * 如果valueNone,session会依赖全局session失效策略。

2、缓存Session

a. 配置 settings.py

  1. SESSION_ENGINE = 'django.contrib.sessions.backends.cache' # 引擎
  2. SESSION_CACHE_ALIAS = 'default' # 使用的缓存别名(默认内存缓存,也可以是memcache),此处别名依赖缓存的设置
  3. SESSION_COOKIE_NAME "sessionid" # Session的cookie保存在浏览器上时的key,即:sessionid=随机字符串
  4. SESSION_COOKIE_PATH "/" # Session的cookie保存的路径
  5. SESSION_COOKIE_DOMAIN = None # Session的cookie保存的域名
  6. SESSION_COOKIE_SECURE = False # 是否Https传输cookie
  7. SESSION_COOKIE_HTTPONLY = True # 是否Session的cookie只支持http传输
  8. SESSION_COOKIE_AGE = 1209600 # Session的cookie失效日期(2周)
  9. SESSION_EXPIRE_AT_BROWSER_CLOSE = False # 是否关闭浏览器使得Session过期
  10. SESSION_SAVE_EVERY_REQUEST = False # 是否每次请求都保存Session,默认修改之后才保存

b. 使用

  1. 同上

3、文件Session

a. 配置 settings.py

  1. SESSION_ENGINE = 'django.contrib.sessions.backends.file' # 引擎
  2. SESSION_FILE_PATH = None # 缓存文件路径,如果为None,则使用tempfile模块获取一个临时地址tempfile.gettempdir() # 如:/var/folders/d3/j9tj0gz93dg06bmwxmhh6_xm0000gn/T
  3. SESSION_COOKIE_NAME "sessionid" # Session的cookie保存在浏览器上时的key,即:sessionid=随机字符串
  4. SESSION_COOKIE_PATH "/" # Session的cookie保存的路径
  5. SESSION_COOKIE_DOMAIN = None # Session的cookie保存的域名
  6. SESSION_COOKIE_SECURE = False # 是否Https传输cookie
  7. SESSION_COOKIE_HTTPONLY = True # 是否Session的cookie只支持http传输
  8. SESSION_COOKIE_AGE = 1209600 # Session的cookie失效日期(2周)
  9. SESSION_EXPIRE_AT_BROWSER_CLOSE = False # 是否关闭浏览器使得Session过期
  10. SESSION_SAVE_EVERY_REQUEST = False # 是否每次请求都保存Session,默认修改之后才保存

b. 使用

  1. 同上

4、缓存+数据库Session

数据库用于做持久化,缓存用于提高效率

a. 配置 settings.py

  1. SESSION_ENGINE = 'django.contrib.sessions.backends.cached_db' # 引擎

b. 使用

  1. 同上

5、加密cookie Session

a. 配置 settings.py

  1. SESSION_ENGINE = 'django.contrib.sessions.backends.signed_cookies' # 引擎

b. 使用

  1. 同上

Python自动化之5种session类型的更多相关文章

  1. python自动化--语言基础1--数据类型及类型转换

    Python中核心的数据类型有哪些?变量(数字.字符串.元组.列表.字典) 什么是数据的不可变性?哪些数据类型具有不可变性数据的不可变是指数据不可更改,比如: a = ("abc" ...

  2. python学习Day8 三种字符类型、文件操作

    复习 类型转换 1.数字类型:int() | bool() | float() 2.str与int:int('10') | int('-10') | int('0') | float('-.5') | ...

  3. Selenium2+python自动化22-发送各种类型附件邮件

    前言 最近一些小伙伴,在搞邮箱的事情,小编于是去折腾了一下!总结了一些干货,与大家分享一下!速来,抱大腿,我要开车了! 基本思路就是,使用MIMEMultipart来标示这个邮件是多个部分组成的,然后 ...

  4. Python自动化运维开发实战 三、python文件类型

    导语: python常用的有3种文件类型 1. 源代码 py 2. 字节代码 pyc 3. 优化代码 pyo 源代码: python源代码的文件以”py"为扩展名,由python程序解释,不 ...

  5. python 四种数值类型(int,long,float,complex)介绍

    Python支持四种不同的数值类型,包括int(整数)long(长整数)float(浮点实际值)complex (复数),本文章向码农介绍python 四种数值类型,需要的朋友可以参考一下. 数字数据 ...

  6. Selenium2+python自动化22-发送各种类型附件邮件【转载】

    前言 最近一些小伙伴,在搞邮箱的事情,小编于是去折腾了一下!总结了一些干货,与大家分享一下!速来,抱大腿,我要开车了! 基本思路就是,使用MIMEMultipart来标示这个邮件是多个部分组成的,然后 ...

  7. python定义一种新类型的元组

    # 定义一种新类型的元组,只保留int类型,切只大于0的元素 # 例如:IntTuple([1,-1,"abc",6,['x','y'],3])==>(1,6,3) # 解决 ...

  8. Selenium2+python自动化65-js定位几种方法总结

    Selenium2+python自动化65-js定位几种方法总结   前言 本篇总结了几种js常用的定位元素方法,并用js点击按钮,对input输入框输入文本 一.以下总结了5种js定位的方法 除了i ...

  9. Selenium2+python自动化41-绕过验证码(add_cookie)

    前言 验证码这种问题是比较头疼的,对于验证码的处理,不要去想破解方法,这个验证码本来就是为了防止别人自动化登录的.如果你能破解,说明你们公司的验证码吗安全级别不高,那就需要提高级别了. 对于验证码,要 ...

随机推荐

  1. linux中硬盘及网卡的表示方法

    Linux中的所有设备均表示为/dev下的一个文件,各种IDE设备分配一个由hd前缀组成的文件:而对于各种SCSI设备,则分配了一个由sd前缀组成的文件,例如: IDE0接口上的主盘成为/dev/hd ...

  2. TCP/IP 三次握手和四次握手

    三次握手建立连接: 第一次握手:客户端发送syn包(seq=x)到服务器,并进入SYN_SEND状态,等待服务器确认: 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=x+1),同时自己 ...

  3. c# 类;一维数组;二维数组

    1. 输入邮箱帐号,判断格式是否正确  (1)有且只有一个@          Contains IndexOf ==LastIndexOf  (2)不能以@开头           StartsWi ...

  4. SQL Server 中的嵌套事务与@@TranCount(转)

    在处理事务的时候,一般都用RollBack Transaction来回滚,但是如果在嵌套事务中这样使用的话,就会出现错误. 在SqlServer里,嵌套事务的层次是由@@TranCount全局变量反映 ...

  5. dt dd 如何在同一行上

    <style> dl{clear:left;} dt,dd{float:left;} </style> <dl> <dt>test </dt> ...

  6. SELECT ... LOCK IN SHARE MODE和SELECT ... FOR UPDATE locks在RR模式下可以看到最新的记录

    14.5.2.4 Locking Reads 锁定读: 如果你查询数据然后插入或者修改相关数据在相同的事务里, 常规的SELECT 语句不能给予足够的保护. 其他事务可以修改或者删除你刚查询相同的记录 ...

  7. ural-1099-Work Scheduling(裸带花树)

    题意: 有N个人,有限对的人可以在一起工作,问最多能有多少对. 分析: 任意图的最大匹配 // File MAXName: 1099.cpp // Author: Zlbing // Created ...

  8. 图解linux下top命令的使用

    top命令经常用来监控linux的系统状况,比如cpu.内存的使用,程序员基本都知道这个命令,但比较奇怪的是能用好它的人却很少,例如top监控视图中内存数值的含义就有不少的曲解. 本文通过一个运行中的 ...

  9. 2012 B 中国近现代史纲要》课程期末考试试卷

    湖南人文科技学院2013年3月公共课 2011级<中国近现代史纲要>课程期末考试试卷B 考核方式:(开卷)                                    考试时量: ...

  10. prim模板题

    题目链接:http://acm.hrbeu.edu.cn/index.php?act=problem&id=1223 #include <cstdio> #include < ...