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 相关文章推荐
easy_install python包安装管理工具介绍
Feb 10 Python
py2exe 编译ico图标的代码
Mar 08 Python
Python写的PHPMyAdmin暴力破解工具代码
Aug 06 Python
在Python的Flask框架下收发电子邮件的教程
Apr 21 Python
python中os模块详解
Oct 14 Python
python处理multipart/form-data的请求方法
Dec 26 Python
python实现海螺图片的方法示例
May 12 Python
python 通过可变参数计算n个数的乘积方法
Jun 13 Python
Numpy的简单用法小结
Aug 28 Python
Pycharm+django2.2+python3.6+MySQL实现简单的考试报名系统
Sep 05 Python
DataFrame 数据合并实现(merge,join,concat)
Jun 14 Python
python 如何获取页面所有a标签下href的值
May 06 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
php的array数组和使用实例简明教程(容易理解)
2014/03/20 PHP
使用PHP函数scandir排除特定目录
2014/06/12 PHP
PHP pthreads v3下的Volatile简介与使用方法示例
2020/02/21 PHP
javascript学习笔记(十三) js闭包介绍(转)
2012/06/20 Javascript
HTML Color Picker(js拾色器效果)
2013/08/27 Javascript
鼠标拖动实现DIV排序示例代码
2013/10/14 Javascript
iframe如何动态创建及释放其所占内存
2014/09/03 Javascript
JavaScript日期时间与时间戳的转换函数分享
2015/01/31 Javascript
JS实现基于Sketch.js模拟成群游动的蝌蚪运动动画效果【附demo源码下载】
2017/08/18 Javascript
全新打包工具parcel零配置vue开发脚手架
2018/01/11 Javascript
浅析vue 函数配置项watch及函数 $watch 源码分享
2018/11/22 Javascript
vue中对象数组去重的实现
2020/02/06 Javascript
原生JS封装拖动验证滑块的实现代码示例
2020/06/01 Javascript
jquery实现简单每周轮换的日历
2020/09/10 jQuery
用Python写的图片蜘蛛人代码
2012/08/27 Python
Python基于PycURL实现POST的方法
2015/07/25 Python
Python编程求质数实例代码
2018/01/31 Python
Pandas 数据框增、删、改、查、去重、抽样基本操作方法
2018/04/12 Python
Python实现将Excel转换成xml的方法示例
2018/08/25 Python
Flask模板引擎之Jinja2语法介绍
2019/06/26 Python
python如何解析配置文件并应用到项目中
2019/06/27 Python
python英语单词测试小程序代码实例
2019/09/09 Python
Python实现验证码识别
2020/06/15 Python
python 贪心算法的实现
2020/09/18 Python
CSS3中设置3D变形的transform-style属性详解
2016/05/23 HTML / CSS
实例教程 HTML5 Canvas 超炫酷烟花绽放动画实现代码
2014/11/05 HTML / CSS
Wojas罗马尼亚网站:波兰皮鞋品牌
2018/11/01 全球购物
审计主管岗位职责
2014/01/31 职场文书
中学生个人自我评价
2014/02/06 职场文书
医院我们的节日活动实施方案
2014/08/22 职场文书
2014年社区国庆节活动方案
2014/09/16 职场文书
小学师德师风整改措施
2014/10/27 职场文书
2015年保险业务员工作总结
2015/05/27 职场文书
少年雷锋观后感
2015/06/10 职场文书
go语言中切片与内存复制 memcpy 的实现操作
2021/04/27 Golang
教你漂亮打印Pandas DataFrames和Series
2021/05/29 Python