jango.contrib.sessions-SessionBase
2015-10-29 11:04
387 查看
SessionBase之所以可当作字典来操作,因为它本身就是对字典的包装。所以需要了解一下python的一些魔法方法。
举个例子:
?
__setitem__负责改变数据。
__delitem__负责删除数据。
__contains__负责判断是否包含这个key。
然后看SessionBase的定义:
?
基本上都是_session的包装。
现在来看看_session的定义:
?
?
注意self.accessed属性的改变。它会记录是否获取过session。
?
一般load实现要注意这种情况,用户第一次登陆是没有_session_cache。注意_get_session方法,它会通过捕获AttributeError异常,判断是否存在_session_cache。如果没有会调用load方法。
所以当用户没有_session_cache的时候,需要返回一个空字典。
注意一下clear的实现。因为执行clear函数时,如果self._session有可能会调用load函数,导致不必要的性能开销。
所以直接复制_session_cache为空。
?
?
get_expire_at_browser_close方法用来判断session的截至时间是否为关闭浏览器的时间。
当_session_expiry为None并且settings.SESSION_EXPIRE_AT_BROWSER_CLOSE设置为true,
当_session_expiry为0,
都会返回true。
?
相关文章推荐
- django.session-middleware
- django-admin sites
- django.core-validators
- django.forms.widget-ChoiceFieldRenderer
- django.forms.widget-ChoiceInput
- Hello,Algorithm!(你好,算法!)
- django.forms-Widget和Media间的联系
- dajngo.forms.widget-Media
- django signal 拾遗
- Proof for Floyd-Warshall's Shortest Path Derivation Algorithm Also Demonstrates the Hierarchical Path Construction Process
- django.relatedField-关联域
- django.contrib.auth.backend-后台
- google-io-2014
- django.contirb.auth-认证
- google guava
- 1057 - Collecting Gold (状态压缩DP)
- Golang学习笔记 - 【杂项】格式化时间成datetime
- Light OJ 1051 - Good or Bad
- 不疯魔,不成活,Rackspace为什么对管理云如此狂热
- kali——google安装