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进行新浪微博的mid和url互相转换实例(10进制和62进制互算)
Apr 25 Python
Python捕捉和模拟鼠标事件的方法
Jun 03 Python
Python在Windows和在Linux下调用动态链接库的教程
Aug 18 Python
Python处理JSON数据并生成条形图
Aug 05 Python
django实现前后台交互实例
Aug 07 Python
利用Pyhton中的requests包进行网页访问测试的方法
Dec 26 Python
Python实现字典按key或者value进行排序操作示例【sorted】
May 03 Python
弄懂这56个Python使用技巧(轻松掌握Python高效开发)
Sep 18 Python
python读文件的步骤
Oct 08 Python
Python requests接口测试实现代码
Sep 08 Python
Python list和str互转的实现示例
Nov 16 Python
Python基础数据类型tuple元组的概念与用法
Aug 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
php木马webshell扫描器代码
2012/01/25 PHP
PHP MYSQL实现登陆和模糊查询两大功能
2016/02/05 PHP
用js实现的仿sohu博客更换页面风格(简单版)
2007/03/22 Javascript
js特殊字符转义介绍
2013/11/05 Javascript
js 绑定键盘鼠标事件示例代码
2014/02/12 Javascript
使用JavaScript实现网页版Pongo设计思路及源代码分享
2014/06/16 Javascript
javascript中Array数组的迭代方法实例分析
2015/02/04 Javascript
Bootstrap框架动态生成Web页面文章内目录的方法
2016/05/12 Javascript
js基于setTimeout与setInterval实现多线程
2016/06/17 Javascript
轻松掌握JavaScript策略模式
2016/08/25 Javascript
JavaScript实现url参数转成json形式
2016/09/25 Javascript
JS中事件冒泡和事件捕获介绍
2016/12/13 Javascript
vue使用stompjs实现mqtt消息推送通知
2017/06/22 Javascript
微信小程序实现animation动画
2018/01/26 Javascript
Javascript的console['']常用输入方法汇总
2018/04/26 Javascript
vue 实现数字滚动增加效果的实例代码
2018/07/06 Javascript
chosen实现省市区三级联动
2018/08/16 Javascript
python实现kmp算法的实例代码
2019/04/03 Python
Python3内置模块之json编解码方法小结【推荐】
2020/12/09 Python
让Python脚本暂停执行的几种方法(小结)
2019/07/11 Python
python 进程的几种创建方式详解
2019/08/29 Python
Python批量修改xml的坐标值全部转为整数的实例代码
2020/11/26 Python
详解HTML5 window.postMessage与跨域
2017/05/11 HTML / CSS
HTML5中在title标题标签里设置小图标的方法
2020/06/23 HTML / CSS
NFL墨西哥官方商店:Tienda NFL
2017/11/28 全球购物
英国和世界各地预订便宜的酒店:LateRooms.com
2019/05/05 全球购物
上海方立数码笔试题
2013/10/18 面试题
如何保障Web服务器安全
2014/05/05 面试题
学生宿舍管理制度
2014/01/30 职场文书
庆元旦文艺演出主持词
2014/03/27 职场文书
审计局2014法制宣传日活动总结
2014/11/01 职场文书
2014年后勤工作总结
2014/11/18 职场文书
获奖感言怎么写
2015/07/31 职场文书
Python初学者必备的文件读写指南
2021/06/23 Python
Python采集爬取京东商品信息和评论并存入MySQL
2022/04/12 Python
create-react-app开发常用配置教程
2022/06/25 Javascript