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中用于去除空格的三个函数的使用小结
Apr 07 Python
python DataFrame获取行数、列数、索引及第几行第几列的值方法
Apr 08 Python
Python操作json的方法实例分析
Dec 06 Python
Python使用Pandas库实现MySQL数据库的读写
Jul 06 Python
Django中ajax发送post请求 报403错误CSRF验证失败解决方案
Aug 13 Python
Python3连接Mysql8.0遇到的问题及处理步骤
Feb 17 Python
Anaconda3+tensorflow2.0.0+PyCharm安装与环境搭建(图文)
Feb 18 Python
keras slice layer 层实现方式
Jun 11 Python
python中实现栈的三种方法
Dec 19 Python
Python-OpenCV实现图像缺陷检测的实例
Jun 11 Python
Python爬虫中urllib3与urllib的区别是什么
Jul 21 Python
Python集合的基础操作
Nov 01 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
有关JSON以及JSON在PHP中的应用
2010/04/09 PHP
PHP连接access数据库
2015/03/27 PHP
ThinkPHP开发--使用七牛云储存
2017/09/14 PHP
PHP 代码简洁之道(小结)
2019/10/16 PHP
jquery中的$(document).ready()与window.onload的区别
2009/11/18 Javascript
Javascript实现的鼠标经过时播放声音
2010/05/18 Javascript
javascript学习笔记(九)javascript中的原型(prototype)及原型链的继承方式
2011/04/12 Javascript
ASP.NET jQuery 实例12 通过使用jQuery validation插件简单实现用户注册页面验证功能
2012/02/03 Javascript
js jquery数组介绍
2012/07/15 Javascript
在javascript中执行任意html代码的方法示例解读
2013/12/25 Javascript
Jquery操作js数组及对象示例代码
2014/05/11 Javascript
JavaScript字符串对象charAt方法入门实例(用于取得指定位置的字符)
2014/10/17 Javascript
jQuery树形下拉菜单特效代码分享
2015/08/15 Javascript
jQuery在ie6下无法设置select选中的解决方法详解
2016/09/20 Javascript
js复制内容到剪贴板代码,js复制代码的简单实例
2016/10/27 Javascript
Node.JS使用Sequelize操作MySQL的示例代码
2017/10/09 Javascript
js中的 || 与 &amp;&amp; 运算符详解
2018/05/24 Javascript
微信小程序如何实现精确的日期时间选择器
2020/01/21 Javascript
JS面向对象编程——ES6 中class的继承用法详解
2020/03/03 Javascript
微信小程序实现点击页面出现文字
2020/09/21 Javascript
js获取url页面id,也就是最后的数字文件名
2020/09/25 Javascript
python获取局域网占带宽最大3个ip的方法
2015/07/09 Python
python 识别图片中的文字信息方法
2018/05/10 Python
windows下python安装pip图文教程
2018/05/25 Python
Python设计模式之装饰模式实例详解
2019/01/21 Python
ERLANG和PYTHON互通实现过程详解
2019/07/05 Python
python2.7的flask框架之引用js&amp;css等静态文件的实现方法
2019/08/22 Python
如何使用PyCharm引入需要使用的包的方法
2020/09/22 Python
移动端适配 使px自动转换rem
2019/08/26 HTML / CSS
仓库管理专业个人自我评价范文
2013/11/11 职场文书
大四自我鉴定
2014/02/08 职场文书
教师政风行风评议心得体会
2014/10/21 职场文书
民主生活会主持词
2015/07/01 职场文书
幼儿园教学反思范文
2016/03/02 职场文书
2019年手机市场的调研报告2篇
2019/10/10 职场文书
python编程简单几行代码实现视频转换Gif示例
2021/10/05 Python