博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
web.py 0.3 新手指南 - Sessions
阅读量:4109 次
发布时间:2019-05-25

本文共 2077 字,大约阅读时间需要 6 分钟。

问题

如何在web.py中使用session

解法

注意!!!:session并不能在调试模式(Debug mode)下正常工作,这是因为session与调试模试下的重调用相冲突(有点类似firefox下著名的Firebug插件,使用Firebug插件分析网页时,会在火狐浏览器之外单独对该网页发起请求,所以相当于同时访问该网页两次),下一节中我们会给出在调试模式下使用session的解决办法。

web.session模块提供session支持。下面是一个简单的例子--统计有多少人正在使用session(session计数器):

import webweb.config.debug = Falseurls = (    "/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'] = Noneweb.config.session_parameters['timeout'] = 86400, #24 * 60 * 60, # 24 hours   in secondsweb.config.session_parameters['ignore_expiry'] = Trueweb.config.session_parameters['ignore_change_ip'] = Trueweb.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过期时显示的提示信息。

转载地址:http://kzosi.baihongyu.com/

你可能感兴趣的文章
Generate Parentheses--生成匹配括号(重)
查看>>
Remove Element--原地移除重复元素
查看>>
Remove Duplicates from Sorted Array--从有序数组中移除重复元素
查看>>
Count and Say
查看>>
Gas Station
查看>>
Palindrome Partitioning --回文切割 深搜(重重)
查看>>
Valid Palindrome 简单的回文判断
查看>>
Pascal's Triangle -- 生成杨辉三角
查看>>
Pascal's Triangle II 生成杨辉三角中的某行
查看>>
Minimum Depth of Binary Tree -- 二叉树的最小深度 DFS 加剪枝
查看>>
Climbing Stairs 爬楼梯方法 动态规划
查看>>
Merge Two Sorted Lists 合并两个有序链表
查看>>
pow(x,n) 为什么错这么多次
查看>>
Jump Game 动态规划
查看>>
Binary Tree Maximum Path Sum 自底向上求解(重重重重)
查看>>
Subsets 深搜
查看>>
Subsets II
查看>>
Edit Distance 字符串距离(重重)
查看>>
Gray Code 格雷码
查看>>
对话周鸿袆:从程序员创业谈起
查看>>