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中定义结构体的方法
Mar 04 Python
python数据结构之线性表的顺序存储结构
Sep 28 Python
python得到单词模式的示例
Oct 15 Python
对python中的乘法dot和对应分量相乘multiply详解
Nov 14 Python
python获取服务器响应cookie的实例
Dec 28 Python
python tkinter库实现气泡屏保和锁屏
Jul 29 Python
Python字符串大小写转换拼接删除空白
Sep 19 Python
浅谈keras中的Merge层(实现层的相加、相减、相乘实例)
May 23 Python
如何快速一次性卸载所有python包(第三方库)呢
Oct 20 Python
python asyncio 协程库的使用
Jan 21 Python
python上下文管理的使用场景实例讲解
Mar 03 Python
python小型的音频操作库mp3Play
Apr 24 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中mysql与mysqli的区别分析
2013/06/10 PHP
php、mysql查询当天,查询本周,查询本月的数据实例(字段是时间戳)
2017/02/04 PHP
Thinkphp 空操作、空控制器、命名空间(详解)
2017/05/05 PHP
初试jQuery EasyUI 使用介绍
2010/04/01 Javascript
fmt:formatDate的输出格式详解
2014/01/09 Javascript
Jquery的Tabs内容轮换效果实现代码,几行搞定
2014/02/12 Javascript
Javascript MVC框架Backbone.js详解
2014/09/18 Javascript
jQuery功能函数详解
2015/02/01 Javascript
Javascript实现字数统计
2015/07/03 Javascript
jQuery使用$.ajax进行即时验证的方法
2015/12/08 Javascript
jquery实现简单的全选和反选功能
2016/01/02 Javascript
基于JavaScript实现树形下拉框
2016/08/10 Javascript
jQuery+Ajax请求本地数据加载商品列表页并跳转详情页的实现方法
2017/07/12 jQuery
基于JavaScript实现幸运抽奖页面
2020/07/05 Javascript
jQuery实现鼠标滑过商品小图片上显示对应大图片功能【测试可用】
2018/04/27 jQuery
详解如何在vscode里面调试js和node.js的方法步骤
2018/12/24 Javascript
vue 根据选择条件显示指定参数的例子
2019/11/09 Javascript
JavaScript实现好看的跟随彩色气泡效果
2020/02/06 Javascript
微信小程序连接服务器展示MQTT数据信息的实现
2020/07/14 Javascript
vue绑定数字类型 value为数字的实例
2020/08/31 Javascript
Python实现的FTP通信客户端与服务器端功能示例
2018/03/28 Python
Python使用指定端口进行http请求的例子
2019/07/25 Python
浅谈Python 递归算法指归
2019/08/22 Python
详解Matplotlib绘图之属性设置
2019/08/23 Python
手把手教你将Flask应用封装成Docker服务的实现
2020/08/19 Python
SmartBuyGlasses台湾:名牌眼镜,名牌太阳眼镜及隐形眼镜
2017/01/04 全球购物
瑞士灯具购物网站:Lampenwelt.ch
2018/07/08 全球购物
Java中的基本数据类型所占存储空间大小固定的吗
2012/02/15 面试题
营销与策划个人求职信
2013/09/22 职场文书
创业计划书六个要素
2013/12/26 职场文书
销售总经理岗位职责
2014/03/15 职场文书
群众路线调研报告范文
2014/11/03 职场文书
市场营销计划书
2015/01/17 职场文书
学校勤俭节约倡议书
2015/04/29 职场文书
九年级数学教学反思
2016/02/17 职场文书
在CSS中使用when/else的方法
2022/01/18 HTML / CSS