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 第一步 hello world
Sep 25 Python
python二叉树的实现实例
Nov 21 Python
跟老齐学Python之集成开发环境(IDE)
Sep 12 Python
python提取内容关键词的方法
Mar 16 Python
python传递参数方式小结
Apr 17 Python
详解python脚本自动生成需要文件实例代码
Feb 04 Python
python将回车作为输入内容的实例
Jun 23 Python
python dict 相同key 合并value的实例
Jan 21 Python
Python流程控制常用工具详解
Feb 24 Python
PyQt实现计数器的方法示例
Jan 18 Python
python的scipy.stats模块中正态分布常用函数总结
Feb 19 Python
python文件目录操作之os模块
May 08 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
Ajax+PHP快速上手及简单应用说明
2013/07/24 PHP
php绘图之加载外部图片的方法
2015/01/24 PHP
PHP实现通过Luhn算法校验信用卡卡号是否有效
2015/03/23 PHP
PHP调用存储过程返回值不一致问题的解决方法分析
2016/04/26 PHP
PHP registerXPathNamespace()函数讲解
2019/02/03 PHP
实例化php类时传参的方法分析
2020/06/05 PHP
javascript,jquery闭包概念分析
2010/06/19 Javascript
jQuery可见性过滤器:hidden和:visibility用法实例
2015/06/24 Javascript
在JavaScript中访问字符串的子串
2015/07/07 Javascript
基于JS实现翻书效果的页面切换样式
2017/02/16 Javascript
JS二分查找算法详解
2017/11/01 Javascript
五步轻松实现zTree的使用
2017/11/01 Javascript
简单理解Vue中的nextTick方法
2018/01/30 Javascript
JavaScript数据结构与算法之二叉树实现查找最小值、最大值、给定值算法示例
2019/03/01 Javascript
vue循环数组改变点击文字的颜色
2019/10/14 Javascript
JavaScript简单编程实例学习
2020/02/14 Javascript
JS实现简易日历效果
2021/01/25 Javascript
[44:39]2014 DOTA2国际邀请赛中国区预选赛 NE VS CNB
2014/05/21 DOTA
[02:10]探秘浦东源深体育馆 DOTA2 Supermajor不见不散
2018/05/17 DOTA
Python Web框架Flask中使用新浪SAE云存储实例
2015/02/08 Python
Python入门教程之if语句的用法
2015/05/14 Python
Python sys.argv用法实例
2015/05/28 Python
Python第三方库的安装方法总结
2016/06/06 Python
Flask框架的学习指南之制作简单blog系统
2016/11/20 Python
python中实现将多个print输出合成一个数组
2018/04/19 Python
python调用c++返回带成员指针的类指针实例
2019/12/12 Python
python 操作mysql数据中fetchone()和fetchall()方式
2020/05/15 Python
Python的logging模块基本用法
2020/12/24 Python
CSS3动画和HTML5新特性详解
2020/08/31 HTML / CSS
Otticanet英国:最顶尖的世界名牌眼镜, 能得到打折季的价格
2019/02/10 全球购物
DBA数据库管理员JAVA程序员架构师必看
2016/02/07 面试题
机电专业体育教师求职信
2013/09/21 职场文书
《阳光》教学反思
2014/02/23 职场文书
2016年党员学习廉政准则心得体会
2016/01/20 职场文书
工作简历的自我评价
2019/05/16 职场文书
PostgreSQL聚合函数介绍以及分组和排序
2022/04/12 PostgreSQL