web.py在SAE中的Session问题解决方法(使用mysql存储)


Posted in Python onJune 24, 2015

这段时间一直想尝试着在SAE中使用Python,初步选择了Web.py框架做为开发框架,但是可怜SAE上的资料少的可怜,有点问题基本上解决不了,今天解决一个Session在Session的存储问题,在SAE中不能直接用本地文件存储,好像是权限的原因,我现在采用的是保存在mysql中,效果也不错。希望对大家有帮助。直接上代码了。

index.wsgi

#!/usr/bin/env python
# coding: utf-8
import os
import web
import sae
from config.url import urls
from config import settings
 
#是否具有调试功能
web.config.debug = False
# app = web.application(urls, globals()).wsgifunc()
# application = sae.create_wsgi_app(app)
 
#解决Session在SAE中的问题
app = web.application(urls, globals())
 
#将session保存在数据库中
db = settings.db
store = web.session.DBStore(db, 'sessions')
#session = web.session.Session(app, store, initializer={'access_token': 'true'})
session = web.session.Session(app, store)
web.config._session = session
 
application = sae.create_wsgi_app(app.wsgifunc())
url.py
#!/usr/bin/env python
# coding: utf-8
 
pre_fix = 'controllers.'
 
urls = (
  '/',          pre_fix + 'todo.Index',
  '/todo/new',      pre_fix + 'todo.New',
  '/todo/(\d+)',     pre_fix + 'todo.View',
  '/todo/(\d+)/edit',   pre_fix + 'todo.Edit',
  '/todo/(\d+)/delete',  pre_fix + 'todo.Delete',
  '/todo/(\d+)/finish',  pre_fix + 'todo.Finish',
  '/todo/login', pre_fix + 'login.LoginUser',
  '/todo/checkuser',pre_fix+'login.CheckUser',
  '/todo/reset',pre_fix+'todo.reset',
  '/todo/saveupload','mycontrollers.saveupload.SaveUpload'
)
setting.py
#!/usr/bin/env python
# coding: utf-8
import web
import sae.const
#数据库设定
db = web.database(dbn='mysql', user=sae.const.MYSQL_USER, pw=sae.const.MYSQL_PASS, host=sae.const.MYSQL_HOST, port=3307, db=sae.const.MYSQL_DB)
#模板设定
render = web.template.render('templates/', cache=False)
 
config = web.storage(
  email='oooo@qq.com<script cf-hash="f9e31" type="text/javascript">
/* <![CDATA[ */!function(){try{var t="currentScript"in document?document.currentScript:function(){for(var t=document.getElementsByTagName("script"),e=t.length;e--;)if(t[e].getAttribute("cf-hash"))return t[e]}();if(t&&t.previousSibling){var e,r,n,i,c=t.previousSibling,a=c.getAttribute("data-cfemail");if(a){for(e="",r=parseInt(a.substr(0,2),16),n=2;a.length-n;n+=2)i=parseInt(a.substr(n,2),16)^r,e+=String.fromCharCode(i);e=document.createTextNode(e),c.parentNode.replaceChild(e,c)}}}catch(u){}}();/* ]]> */</script>',
  site_name = '任务跟踪',
  site_desc = '',
  static = '/static',
)
 
web.template.Template.globals['config'] = config
web.template.Template.globals['render'] = render
login.py
#!/usr/bin/env python
# coding: utf-8
import web
from config import settings
render = settings.render
def myloadhook():
  global session
  session = web.config._session
class LoginUser:
  def GET(self):
    return render.LoginUser()
class CheckUser:
  def POST(self):
    #获取Session相关信息
    myloadhook()
    #获取表单信息
    i = web.input()
    username =i.get('txtUserName',None)
    password=i.get('txtUserPass',None)
    #从全局配置文件中得到session
    session = web.config._session
    if username == 'chu888' and password == 'chu888':
      session.access_token = 'true'
      raise web.seeother('/')
    else:
      session.access_token = 'false'
      raise web.seeother('/todo/login')
Python 相关文章推荐
python使用any判断一个对象是否为空的方法
Nov 19 Python
Python实现发送QQ邮件的封装
Jul 14 Python
Pandas探索之高性能函数eval和query解析
Oct 28 Python
Python找出最小的K个数实例代码
Jan 04 Python
Python实现按中文排序的方法示例
Apr 25 Python
python pandas 对series和dataframe的重置索引reindex方法
Jun 07 Python
python+logging+yaml实现日志分割
Jul 22 Python
python之pymysql模块简单应用示例代码
Dec 16 Python
python中68个内置函数的总结与介绍
Feb 24 Python
200行python代码实现贪吃蛇游戏
Apr 24 Python
python 元组的使用方法
Jun 09 Python
Python使用tkinter实现摇骰子小游戏功能的代码
Jul 02 Python
Python实现LRU算法的2种方法
Jun 24 #Python
Python中线程编程之threading模块的使用详解
Jun 23 #Python
Python Property属性的2种用法
Jun 21 #Python
Python中实现三目运算的方法
Jun 21 #Python
Python中有趣在__call__函数
Jun 21 #Python
Python的装饰器模式与面向切面编程详解
Jun 21 #Python
Python安装第三方库的3种方法
Jun 21 #Python
You might like
将文件夹压缩成zip文件的php代码
2009/12/14 PHP
php实现的Timer页面运行时间监测类
2014/09/24 PHP
Laravel框架自定义分页样式操作示例
2020/01/26 PHP
jQuery与ExtJS之选择实例分析
2010/08/19 Javascript
jQuery1.6 使用方法二
2011/11/23 Javascript
15条JavaScript最佳实践小结
2013/08/09 Javascript
对Jquery中的ajax再封装,简化操作示例
2014/02/12 Javascript
JS对象与json字符串格式转换实例
2014/10/28 Javascript
javascript实现回到顶部特效
2015/05/06 Javascript
js获取本机操作系统类型的两种方法
2015/12/19 Javascript
Javascript中indexOf()和lastIndexOf应用方法实例
2016/08/24 Javascript
JS实现的幻灯片切换显示效果
2016/09/07 Javascript
Javascript数组循环遍历之forEach详解
2016/11/07 Javascript
一个炫酷的Bootstrap导航菜单
2016/12/28 Javascript
canvas红包照片实例分享
2017/02/28 Javascript
Vue 动态设置路由参数的案例分析
2018/04/24 Javascript
[03:41]DOTA2上海特锦赛小组赛第三日recap精彩回顾
2016/02/28 DOTA
[02:04]2018DOTA2亚洲邀请赛Secret赛前采访
2018/04/03 DOTA
详解Python中的文本处理
2015/04/11 Python
windows及linux环境下永久修改pip镜像源的方法
2016/11/28 Python
解决DataFrame排序sort的问题
2018/06/07 Python
Python全局变量与局部变量区别及用法分析
2018/09/03 Python
浅谈Django2.0 加xadmin踩的坑
2019/11/15 Python
Python Pickle 实现在同一个文件中序列化多个对象
2019/12/30 Python
python3爬取torrent种子链接实例
2020/01/16 Python
python 解决print数组/矩阵无法完整输出的问题
2020/02/19 Python
Timberland美国官网:全球领先的户外品牌
2016/08/15 全球购物
英国假发网站:Hothair
2018/02/23 全球购物
大学生个人总结的自我评价
2013/10/05 职场文书
会计电算化专业毕业生求职信范文
2013/12/10 职场文书
学生请假条
2014/04/11 职场文书
党支部创先争优承诺书
2014/08/30 职场文书
酒店采购员岗位职责
2015/04/03 职场文书
李强优秀员工观后感
2015/06/16 职场文书
Nginx四层负载均衡的配置指南
2021/06/11 Servers
SQL中的三种去重方法小结
2021/11/01 SQL Server