Django中会话相关方法

  介绍

今天就跟大家聊聊有关Django中会话相关方法,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

<强>会话的由来

饼干虽然在一定程度上解决了“保持状态”的需求,但是由于饼干本身最大支持4096字节,以及饼干本身保存在客户端,可能被拦截或窃取,因此就需要有一种新的东西,它能支持更多的字节,并且他保存在服务器,有较高的安全性。这就是会话。

问题来了,基于HTTP协议的无状态特征,服务器根本就不知道访问者是“谁”。那么上述的饼干就起到桥接的作用。

我们可以给每个客户端的饼干分配一个唯一的id,这样用户在访问时,通过饼干,服务器就知道来的人是"谁" .

然后我们再根据不同的饼干的id,在服务器上保存一段时间的私密资料,如“账号密码”等等。

总结而言:饼干弥补了HTTP无状态的不足,让服务器知道来的人是“谁”;但是饼干以文本的形式保存在本地,

自身安全性较差,所以我们就通过饼干识别不同的用户,对应的在会话里保存私密的信息以及超过4096字节的文本。

另外,上述所说的会话Cookie和其实是共通性的东西,不限于语言和框架。

简单的来说,会话就是保存在服务器上一组组键值对(必须依赖Cookie)。

<强>为什么要有会话:

1.饼干保存在浏览器本地。

2。大小个数受到限制。

<强> Django中会话相关方法

#,获取   request.session [& # 39; k1 # 39;] #, request.session(例子),,=,value  #[& # 39;关键# 39;]获取不到会报错,建议使用得到获取,没有值返回没有   request.session.get (& # 39; k1 # 39;, None) #, request.session.get(关键)   #设置   request.session [& # 39; k1 # 39;],=, 123,,   request.session.setdefault (& # 39; k1 # 39;, 123), #,存在则不设置   #删除   del  request.session [& # 39; k1 # 39;] #删除   request.session.delete() #,删除当前话的所有会话数据   #设置值用的什么类型,判断也用什么数据类型做判断   如:if  is_login  !=, & # 39; 1 & # 39;:,,设置的时候是字符串& # 39;1 & # 39;才能这样写,cookie的值必须是字符串形式。   #,所有,键,值,键值对   request.session.keys ()   request.session.values ()   request.session.items ()   “““   老的mysql版本可以使用   request.session.iterkeys ()   request.session.itervalues ()   request.session.iteritems ()   “““   #,会话会话的关键   request.session.session_key   #,将所有会话失效日期小于当前日期的数据删除   request.session.clear_expired ()   #,检查会话会话的关键在数据库中是否存在   request.session.exists (“session_key")   #,删除当前会话的所有会话数据   request.session.delete ()      #,删除当前的会话数据并删除会话的饼干。   request.session.flush (),   ,,,这用于确保前面的会话数据不可以再次被用户的浏览器访问   ,,,例如,django.contrib.auth.logout(),函数中就会调用它。   #,设置会话会话和饼干的超时时间,,,#默认两周的超时时间   request.session.set_expiry(值)   ,,,*,如果价值是个整数,会议会在些秒数后失效。   ,,,*,如果价值是个datatime或timedelta,会话就会在这个时间后失效。   ,,,*,如果值是0,用户关闭浏览器会话就会失效。   ,,,*,如果是没有价值,会话会依赖全局会议失效策略。

<强>会话流程解析

 Django中会话相关方法”> <强> Django中会话的配置</强> </p> <pre类= # Django中默认支持会话,其内部提供了5种类型的会话供开发者使用。   1只数据库会话   时间=SESSION_ENGINE  & # 39; django.contrib.sessions.backends.db& # 39;,,, #,引擎(默认)   2只缓存会话   时间=SESSION_ENGINE  & # 39; django.contrib.sessions.backends.cache& # 39;,, #,引擎   时间=SESSION_CACHE_ALIAS  & # 39;默认# 39;,,,,,,,,,,,,,,,,,,,,,,,,,,,,#,使用的缓存别名(默认内存缓存,   也可以是memcache),   此处别名依赖缓存的设置   3只文件会话   时间=SESSION_ENGINE  & # 39; django.contrib.sessions.backends.file& # 39;,,,, #,引擎   时间=SESSION_FILE_PATH  None ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, #,缓存文件路径,如果为没有,   则使用tempfile模块获取一个临时地址tempfile.gettempdir (),   4只;缓存+数据库   时间=SESSION_ENGINE  & # 39; django.contrib.sessions.backends.cached_db& # 39;,,,,,,,, #,引擎   5只加密Cookie 会话   时间=SESSION_ENGINE  & # 39; django.contrib.sessions.backends.signed_cookies& # 39;,,, #,引擎   其他公用设置项:   时间=SESSION_COOKIE_NAME “sessionid",,,,,,,,,,,,,,,,,,,,,,, #,会话的饼干保存在浏览器上时的关键,   即:sessionid=随机字符串(默认)   时间=SESSION_COOKIE_PATH “/?,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, #,会话的饼干保存的路径(默认)   时间=SESSION_COOKIE_DOMAIN  None ,,,,,,,,,,,,,,,,,,,,,,,,,,,, #,会话的饼干保存的域名(默认)   时间=SESSION_COOKIE_SECURE  False ,,,,,,,,,,,,,,,,,,,,,,,,,,, #,是否Https传输饼干(默认)   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

Django中会话相关方法