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制作花瓣网美女图片爬虫
Oct 28 Python
举例讲解Python的lambda语句声明匿名函数的用法
Jul 01 Python
Python虚拟环境virtualenv的安装与使用详解
May 28 Python
Python 批量合并多个txt文件的实例讲解
May 08 Python
解决matplotlib库show()方法不显示图片的问题
May 24 Python
python 使用值来排序一个字典的方法
Nov 16 Python
利用nohup来开启python文件的方法
Jan 14 Python
python3读取图片并灰度化图片的四种方法(OpenCV、PIL.Image、TensorFlow方法)总结
Jul 04 Python
python中for循环变量作用域及用法详解
Nov 05 Python
python3.x 生成3维随机数组实例
Nov 28 Python
pycharm 2018 激活码及破解补丁激活方式
Sep 21 Python
pytorch中的weight-initilzation用法
Jun 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加密解密字符串汇总
2015/04/26 PHP
CentOS下搭建PHP环境与WordPress博客程序的全流程总结
2016/05/07 PHP
tp5框架前台无限极导航菜单类实现方法分析
2020/03/29 PHP
jQueryUI如何自定义组件实现代码
2010/11/14 Javascript
JQuery学习笔记 nt-child的使用
2011/01/17 Javascript
zShowBox 图片放大展示jquery版 兼容性
2011/09/24 Javascript
javascript检测对象中是否存在某个属性判断方法小结
2013/05/19 Javascript
jQuery 事件的命名空间简单了解
2013/11/22 Javascript
构造函数+原型模式构造js自定义对象(最通用)
2014/05/12 Javascript
轻量级的原生js日历插件calendar.js使用指南
2015/04/28 Javascript
jquery实现点击向下展开菜单项(伸缩导航)效果
2015/08/22 Javascript
jQuery div拖拽用法实例
2016/01/14 Javascript
bootstrap table复杂操作代码
2016/11/01 Javascript
angular仿支付宝密码框输入效果
2017/03/25 Javascript
简单实现JS上传图片预览功能
2017/04/14 Javascript
详解基于 Nuxt 的 Vue.js 服务端渲染实践
2017/10/24 Javascript
搭建vue开发环境
2018/07/19 Javascript
详解React项目中碰到的IE问题
2019/03/14 Javascript
echarts实现晶体球面投影的实例教程
2020/10/10 Javascript
浅谈Vue开发人员的7个最好的VSCode扩展
2021/01/20 Vue.js
Zabbix实现微信报警功能
2016/10/09 Python
梯度下降法介绍及利用Python实现的方法示例
2017/07/12 Python
Python做智能家居温湿度报警系统
2018/09/25 Python
python字符串循环左移
2019/03/08 Python
python实现简单图片物体标注工具
2019/03/18 Python
Python实现 PS 图像调整中的亮度调整
2019/06/28 Python
Python 获取ftp服务器文件时间的方法
2019/07/02 Python
css3实现针线缝合效果(图解步骤)
2013/02/04 HTML / CSS
新加坡网上化妆品店:Best Buy World
2018/05/18 全球购物
SOA面试题:如何在SOA中实现松耦合
2013/07/21 面试题
酒店门卫岗位职责
2013/12/29 职场文书
《我不是最弱小的》教学反思
2014/02/23 职场文书
物流管理专业毕业生自荐信
2014/03/04 职场文书
留守儿童工作方案
2014/06/02 职场文书
夫妻房产协议书的格式
2014/10/11 职场文书
dubbo服务整合zipkin详解
2021/07/26 Java/Android