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中List.count()方法的使用教程
May 20 Python
Python聊天室实例程序分享
Jan 05 Python
Python实现计算最小编辑距离
Mar 17 Python
举例讲解Python中字典的合并值相加与异或对比
Jun 04 Python
详解用Python处理HTML转义字符的5种方式
Dec 27 Python
python模拟表单提交登录图书馆
Apr 27 Python
浅谈Python中重载isinstance继承关系的问题
May 04 Python
Python数据可视化教程之Matplotlib实现各种图表实例
Jan 13 Python
Python中psutil的介绍与用法
May 02 Python
Python爬虫headers处理及网络超时问题解决方案
Jun 19 Python
python3访问字典里的值实例方法
Nov 18 Python
Python echarts实现数据可视化实例详解
Mar 03 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缓冲区用法总结
2016/02/14 PHP
万能的php分页类
2017/07/06 PHP
php类自动装载、链式操作、魔术方法实现代码
2017/07/23 PHP
PHP实现会员账号单唯一登录的方法分析
2019/03/07 PHP
js滚动条回到顶部的代码
2011/12/06 Javascript
Google的跟踪代码 动态加载js代码方法应用
2012/11/12 Javascript
用js实现in_array的方法
2013/11/05 Javascript
JavaScript框架(iframe)操作总结
2014/04/16 Javascript
JavaScript中对象property的删除方法介绍
2014/12/30 Javascript
AngularJS通过$location获取及改变当前页面的URL
2016/09/23 Javascript
微信小程序 wx.uploadFile无法上传解决办法
2016/12/14 Javascript
详解vue嵌套路由-query传递参数
2017/05/23 Javascript
信息滚动效果的实例讲解
2017/09/18 Javascript
ES6 Map结构的应用实例分析
2019/06/26 Javascript
Linux下使用python自动修改本机网关代码分享
2015/05/21 Python
在Mac OS上搭建Python的开发环境
2015/12/24 Python
Python 中 Virtualenv 和 pip 的简单用法详解
2017/08/18 Python
Python并行分布式框架Celery详解
2018/10/15 Python
python匹配两个短语之间的字符实例
2018/12/25 Python
PyTorch中Tensor的维度变换实现
2019/08/18 Python
使用matlab或python将txt文件转为excel表格
2019/11/01 Python
python安装和pycharm环境搭建设置方法
2020/05/27 Python
如何用 Python 处理不平衡数据集
2021/01/04 Python
python爬取股票最新数据并用excel绘制树状图的示例
2021/03/01 Python
CSS3属性background-size使用指南
2014/12/09 HTML / CSS
建筑工程技术应届生自荐信
2013/09/27 职场文书
小班秋游活动方案
2014/02/22 职场文书
遥感技术与仪器求职信
2014/02/22 职场文书
公司总经理岗位职责
2014/03/15 职场文书
食品安全责任书
2014/04/15 职场文书
大学生交通专业求职信
2014/09/01 职场文书
工作失职检讨书
2015/01/26 职场文书
中秋节作文(五年级)之关于月亮
2019/09/11 职场文书
解决Pytorch半精度浮点型网络训练的问题
2021/05/24 Python
SQL Server中使用表变量和临时表
2022/05/20 SQL Server
html,css,javascript是怎样变成页面的
2023/05/07 HTML / CSS