问题
如何在web.py中使用session
解法
注意!!!:session并不能在调试模式(Debug mode)下正常工作,这是因为session与调试模试下的重调用相冲突(有点类似firefox下著名的Firebug插件,使用Firebug插件分析网页时,会在火狐浏览器之外单独对该网页发起请求,所以相当于同时访问该网页两次),下一节中我们会给出在调试模式下使用session的解决办法。
web.session
模块提供session支持。下面是一个简单的例子--统计有多少人正在使用session(session计数器):
import web
web.config.debug = False
urls = (
"/count", "count",
"/reset", "reset"
)
app = web.application(urls, locals())
session = web.session.Session(app, web.session.DiskStore('sessions'), initializer={'count': 0})
class count:
def GET(self):
session.count += 1
return str(session.count)
class reset:
def GET(self):
session.kill()
return ""
if __name__ == "__main__":
app.run()
web.py在处理请求之前,就加载session对象及其数据;在请求处理完之后,会检查session数据是否被改动。如果被改动,就交由session对象保存。
上例中的initializer
参数决定了session初始化的值,它是个可选参数。
如果用数据库代替磁盘文件来存储session信息,只要用DBStore
代替DiskStore
即可。使用DBStore需要建立一个表,结构如下:
create table sessions (
session_id char(128) UNIQUE NOT NULL,
atime timestamp NOT NULL default current_timestamp,
data text
);
DBStore
被创建要传入两个参数:db
对象和session的表名。
db = web.database(dbn='postgres', db='mydatabase', user='myname', pw='')
store = web.session.DBStore(db, 'sessions')
session = web.session.Session(app, store, initializer={'count': 0})
`web.config`中的sessions_parameters
保存着session的相关设置,sessions_parameters
本身是一个字典,可以对其修改。默认设置如下:
web.config.session_parameters['cookie_name'] = 'webpy_session_id'
web.config.session_parameters['cookie_domain'] = None
web.config.session_parameters['timeout'] = 86400, #24 * 60 * 60, # 24 hours in seconds
web.config.session_parameters['ignore_expiry'] = True
web.config.session_parameters['ignore_change_ip'] = True
web.config.session_parameters['secret_key'] = 'fLjUfxqXtfNoIldA0A0J'
web.config.session_parameters['expired_message'] = 'Session expired'
- cookie_name - 保存session id的Cookie的名称
- cookie_domain - 保存session id的Cookie的domain信息
- timeout - session的有效时间 ,以秒为单位
- ignore_expiry - 如果为True,session就永不过期
- ignore_change_ip - 如果为true,就表明只有在访问该session的IP与创建该session的IP完全一致时,session才被允许访问。
- secret_key - 密码种子,为session加密提供一个字符串种子
- expired_message - session过期时显示的提示信息。
相关推荐
资源来自pypi官网。 资源全名:Products.Sessions-4.11-py2.py3-none-any.whl
标题中的"Products.Sessions-4.11-py2.py3-none-any.whl"是一个Python库的发行包,这是Python生态系统中常见的分发格式。它主要用于安装和分发Python软件包,尤其是通过pip(Python的包管理器)进行安装时。这种格式...
资源分类:Python库 所属语言:Python 资源全名:Products.Sessions-4.5-py2.py3-none-any.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
资源分类:Python库 所属语言:Python 资源全名:Products.Sessions-4.12-py2.py3-none-any.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
python库。 资源全名:django_user_sessions-1.1.0-py2.py3-none-any.whl
资源分类:Python库 所属语言:Python 资源全名:p2.ui.sessions-0.5.13-py3-none-any.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
资源来自pypi官网。 资源全名:p2.ui.sessions-0.3.3-py3-none-any.whl
log-sessions-2021-08-21-041328.session
2006-11-01 14:06 195,384 logonsessions.exe 2006-11-01 14:05 146,232 movefile.exe 2006-11-01 14:06 228,152 newsid.exe 2006-11-01 14:05 122,680 ntfsinfo.exe 2006-11-01 14:06 215,928 pagedfrg.exe 2000-07...
Each exercise is structured to be completed within approximately ten minutes, making it ideal for quick learning sessions. The exercises cover various aspects of the Python programming language, ...
总的来说,"adam-hanna-sessions" 是一个专注于提升Web应用会话管理体验的开源工具,它旨在简化开发流程,提高性能,同时提供足够的灵活性,以适应不同的开发场景和需求。通过参与和利用这样的项目,开发者可以受益...
max-sessions属性 B.1.9.2. expired-url属性 B.1.9.3. error-if-maximum-exceeded属性 B.1.9.4. session-registry-alias和session-registry-ref属性 B.1.10. 元素 B.1.11. 元素 B.1.11.1. subject-principal-...
django-redis-sessions, 在Redis数据库中,用于存储会话的Django 会话后端 django-redis-sessions用于你的会话的Redis数据库后端 安装工具可用设置变更日志文件安装运行 pip install django-redis-sessions 或者另外...
在MT5中,“i-Sessions”是一款特别设计的脚本,用于显示和分析全球不同市场的交易会话,这对于全球交易者理解市场动态至关重要。 交易会话是指金融市场在特定时间段内的活跃交易时段。主要的交易会话包括亚洲、...
然后,在Django项目的`settings.py`文件中,将`user_sessions`添加到`INSTALLED_APPS`列表中,并配置所需的会话设置。通常还需要在URL配置中包含库提供的视图。 **应用场景** 这个库特别适用于那些对用户会话管理有...
log-sessions-2021-09-21-183121.session