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语言描述KNN算法与Kd树
Dec 13 Python
python实现周期方波信号频谱图
Jul 21 Python
Python初学者需要注意的事项小结(python2与python3)
Sep 26 Python
tensorflow 实现打印pb模型的所有节点
Jan 23 Python
Django+boostrap 美化admin后台的操作
Mar 11 Python
基于Django OneToOneField和ForeignKey的区别详解
Mar 30 Python
用Python 爬取猫眼电影数据分析《无名之辈》
Jul 24 Python
python实现二分查找算法
Sep 18 Python
python3排序的实例方法
Oct 20 Python
Python学习之time模块的基本使用
Jan 17 Python
Python爬虫入门教程02之笔趣阁小说爬取
Jan 24 Python
浅谈Python响应式类库RxPy
Jun 14 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自动获取目录下的模板的代码
2010/08/08 PHP
php设计模式 Decorator(装饰模式)
2011/06/26 PHP
PHP数据类型之布尔型的介绍
2013/04/28 PHP
php中simplexml_load_file函数用法实例
2014/11/12 PHP
ThinkPHP框架安全实现分析
2016/03/14 PHP
PHP基于rabbitmq操作类的生产者和消费者功能示例
2018/06/16 PHP
jqTransform form表单美化插件使用方法
2012/07/05 Javascript
jQuery判断checkbox(复选框)是否被选中以及全选、反选实现代码
2014/02/21 Javascript
基于HTML+CSS+JS实现增加删除修改tab导航特效代码
2016/08/05 Javascript
Angular 中 select指令用法详解
2016/09/29 Javascript
canvas时钟效果
2017/02/16 Javascript
javascript基于定时器实现进度条功能实例
2017/10/13 Javascript
利用原生js实现html5小游戏之打砖块(附源码)
2018/01/03 Javascript
详解从Vue-router到html5的pushState
2018/07/21 Javascript
Vue用v-for给循环标签自身属性添加属性值的方法
2018/10/18 Javascript
React事件处理的机制及原理
2018/12/03 Javascript
python修改操作系统时间的方法
2015/05/18 Python
不要用强制方法杀掉python线程
2017/02/26 Python
Python 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)
2018/03/19 Python
pandas read_excel()和to_excel()函数解析
2019/09/19 Python
pytorch 中pad函数toch.nn.functional.pad()的用法
2020/01/08 Python
Html5获取高德地图定位天气的方法
2019/12/26 HTML / CSS
新西兰领先的内衣店:Bendon Lingerie新西兰
2018/07/11 全球购物
Ego Shoes官网:英国时髦鞋类品牌
2020/10/19 全球购物
德国便宜的宠物店:Brekz.de
2020/10/23 全球购物
.net开发工程师面试题
2014/02/25 面试题
研究生自我鉴定范文
2013/10/30 职场文书
《美丽的黄昏》教学反思
2014/02/28 职场文书
个人廉政承诺书
2015/04/28 职场文书
师德师风培训感言
2015/08/03 职场文书
聘任协议书(挂靠)
2015/09/21 职场文书
升学宴学生致辞
2015/09/29 职场文书
MATLAB 如何求取离散点的曲率最大值
2021/04/16 Python
Python使用openpyxl批量处理数据
2021/06/23 Python
vue实现简易音乐播放器
2022/08/14 Vue.js
python如何利用cv2.rectangle()绘制矩形框
2022/12/24 Python