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清除字符串里非字母字符的方法
Jul 02 Python
浅谈python新手中常见的疑惑及解答
Jun 14 Python
Python实现输出程序执行进度百分比的方法
Sep 16 Python
使用python和Django完成博客数据库的迁移方法
Jan 05 Python
详解一种用django_cache实现分布式锁的方式
Sep 01 Python
python多进程重复加载的解决方式
Dec 13 Python
基于python实现语音录入识别代码实例
Jan 17 Python
Django框架models使用group by详解
Mar 11 Python
python 判断txt每行内容中是否包含子串并重新写入保存的实例
Mar 12 Python
django 实现简单的插入视频
Apr 07 Python
服务器端jupyter notebook映射到本地浏览器的操作
Apr 14 Python
scrapy在python爬虫中搭建出错的解决方法
Nov 22 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生成指定范围内的N个不重复的随机数
2019/03/18 PHP
多浏览器支持的右下角浮动窗口
2010/04/01 Javascript
点击弹出层外区域关闭弹出层jquery特效示例
2013/08/25 Javascript
Jquery模仿Baidu、Google搜索时自动补充搜索结果提示
2013/12/26 Javascript
jQuery操作CheckBox的方法介绍(选中,取消,取值)
2014/02/04 Javascript
引入autocomplete组件时JS报未结束字符串常量错误
2014/03/19 Javascript
JavaScript中的getTimezoneOffset()方法使用详解
2015/06/10 Javascript
详解AngularJS的通信机制
2015/06/18 Javascript
javascript中闭包(Closure)详解
2016/01/06 Javascript
详解JS面向对象编程
2016/01/24 Javascript
深入理解jquery跨域请求方法
2016/05/18 Javascript
js获取当前年月日-YYYYmmDD格式的实现代码
2016/06/01 Javascript
smartupload实现文件上传时获取表单数据(推荐)
2016/12/12 Javascript
JavaScript 函数节流详解及方法总结
2017/02/09 Javascript
JS中的多态实例详解
2017/10/15 Javascript
解决vue-cli3 使用子目录部署问题
2018/07/19 Javascript
vue项目,代码提交至码云,iconfont的用法说明
2020/07/30 Javascript
vue element和nuxt的使用技巧分享
2021/01/14 Vue.js
[01:56]《DOTA2》中文配音CG
2013/04/22 DOTA
Python引用(import)文件夹下的py文件的方法
2014/08/26 Python
使用python加密自己的密码
2015/08/04 Python
Python 3.x 判断 dict 是否包含某键值的实例讲解
2018/07/06 Python
python批量修改图片后缀的方法(png到jpg)
2018/10/25 Python
Python3 pip3 list 出现 DEPRECATION 警告的解决方法
2019/02/16 Python
python 多线程串行和并行的实例
2019/02/22 Python
Flask框架钩子函数功能与用法分析
2019/08/02 Python
使用OpenCV实现仿射变换—平移功能
2019/08/29 Python
利用Python的folium包绘制城市道路图的实现示例
2020/08/24 Python
Python unittest生成测试报告过程解析
2020/09/08 Python
残疾人创业典型事迹
2014/02/01 职场文书
党员个人对照检查材料
2014/10/01 职场文书
委托书格式要求
2015/01/28 职场文书
初级职称评定工作总结
2015/08/13 职场文书
大学自主招生自荐信(2016精选篇)
2016/01/28 职场文书
SQLServer 错误: 15404,无法获取有关 Windows NT 组/用户 WIN-8IVSNAQS8T7\Administrator 的信息
2021/06/30 SQL Server
浅谈resultMap的用法及关联结果集映射
2021/06/30 Java/Android