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 strip lstrip rstrip使用方法
Sep 06 Python
python实现连接mongodb的方法
May 08 Python
Python tkinter模块中类继承的三种方式分析
Aug 08 Python
解决pycharm工程启动卡住没反应的问题
Jan 19 Python
python实现网站微信登录的示例代码
Sep 18 Python
python实现大量图片重命名
Mar 23 Python
Python中求对数方法总结
Mar 10 Python
动态设置django的model field的默认值操作步骤
Mar 30 Python
keras中的History对象用法
Jun 19 Python
python两个list[]相加的实现方法
Sep 23 Python
python中append函数用法讲解
Dec 11 Python
python BeautifulSoup库的安装与使用
Dec 17 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 HtmlReplace输入过滤安全函数
2010/07/03 PHP
php.ini修改php上传文件大小限制的方法详解
2013/06/17 PHP
PHP Callable强制指定回调类型的方法
2016/08/30 PHP
php利用array_search与array_column实现二维数组查找
2019/07/08 PHP
jquery实现奇偶行赋值不同css值
2012/02/17 Javascript
JavaScript异步回调的Promise模式封装实例
2014/06/07 Javascript
javascript实现实时输出当前的时间
2015/04/27 Javascript
JavaScript开发者必备的10个Sublime Text插件
2016/02/27 Javascript
JS动态插入并立即执行回调函数的方法
2016/04/21 Javascript
jQuery+CSS3+Html5实现弹出层效果实例代码(附源码下载)
2016/05/16 Javascript
js判断radiobuttonlist的选中值显示/隐藏其它模块的实现方法
2016/08/25 Javascript
微信小程序 实例开发总结
2017/04/26 Javascript
js 获取json数组里面数组的长度实例
2017/10/31 Javascript
Vue-Access-Control 前端用户权限控制解决方案
2017/12/01 Javascript
在react-router4中进行代码拆分的方法(基于webpack)
2018/03/08 Javascript
微信小程序自定义音乐进度条的实例代码
2018/08/28 Javascript
js变量声明var使用与不使用的区别详解
2019/01/21 Javascript
如何根据业务封装自己的功能组件
2019/04/19 Javascript
vue中的inject学习教程
2019/04/24 Javascript
Vue动态生成表格的行和列
2019/07/18 Javascript
JS实现简单日历特效
2020/01/03 Javascript
[16:43]Heroes19_剃刀(完美)
2014/10/31 DOTA
python logging 日志轮转文件不删除问题的解决方法
2016/08/02 Python
Python利用matplotlib生成图片背景及图例透明的效果
2017/04/27 Python
python安装教程
2018/02/28 Python
使用Python AIML搭建聊天机器人的方法示例
2018/07/09 Python
Python3的高阶函数map,reduce,filter的示例详解
2019/07/23 Python
python的reverse函数翻转结果为None的问题
2020/05/11 Python
详解Python中第三方库Faker
2020/09/25 Python
plt.figure()参数使用详解及运行演示
2021/01/08 Python
医学生实习自我鉴定
2013/09/27 职场文书
英文留学推荐信范文
2014/01/25 职场文书
总账会计岗位职责
2014/03/13 职场文书
2014年学校党建工作总结
2014/11/11 职场文书
道德模范事迹材料
2014/12/20 职场文书
vue css 相对路径导入问题级踩坑记录
2022/06/05 Vue.js