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启动办公软件进程(word、excel、ppt、以及wps的et、wps、wpp)
Apr 09 Python
举例讲解Linux系统下Python调用系统Shell的方法
Nov 07 Python
python编程开发之类型转换convert实例分析
Nov 13 Python
Python OS模块实例详解
Apr 15 Python
python如何以表格形式打印输出的方法示例
Jun 21 Python
python pandas生成时间列表
Jun 29 Python
使用Filter过滤python中的日志输出的实现方法
Jul 17 Python
Python实现图像的垂直投影示例
Jan 17 Python
Python3自定义http/https请求拦截mitmproxy脚本实例
May 11 Python
pytorch随机采样操作SubsetRandomSampler()
Jul 07 Python
Python如何读写字节数据
Aug 05 Python
python实现PolynomialFeatures多项式的方法
Jan 06 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新手用的Insert和Update语句构造类
2012/03/31 PHP
ThinkPHP查询语句与关联查询用法实例
2014/11/01 PHP
PHP智能识别收货地址信息实例
2019/01/05 PHP
PHP保留两位小数的几种方法
2019/07/24 PHP
Javascript匿名函数的一种应用 代码封装
2010/06/27 Javascript
javascript实现图片切换的幻灯片效果源代码
2012/12/12 Javascript
如何让你的Lightbox支持滚轮缩放及Base64图片
2014/12/04 Javascript
了不起的node.js读书笔记之例程分析
2014/12/22 Javascript
浅谈js常用内置方法和对象
2016/09/24 Javascript
Bootstrap基本插件学习笔记之Popover提示框(19)
2016/12/08 Javascript
JS 实现计算器详解及实例代码(一)
2017/01/08 Javascript
javascript监听页面刷新和页面关闭事件方法详解
2017/01/09 Javascript
js通过指定下标或指定元素进行删除数组的实例
2017/01/12 Javascript
JavaScript 基础表单验证示例(纯Js实现)
2017/07/20 Javascript
vue实现点击图片放大效果
2017/08/15 Javascript
浅谈es6 javascript的map数据结构
2017/12/14 Javascript
深入理解requireJS-实现一个简单的模块加载器
2018/01/15 Javascript
Node.Js中实现端口重用原理详解
2018/05/03 Javascript
微信小程序如何实现全局重新加载
2019/06/05 Javascript
[51:39]DOTA2-DPC中国联赛 正赛 Magma vs LBZS BO3 第二场 2月7日
2021/03/11 DOTA
python实现TF-IDF算法解析
2018/01/02 Python
Tensorflow 训练自己的数据集将数据直接导入到内存
2018/06/19 Python
Python DataFrame.groupby()聚合函数,分组级运算
2018/09/18 Python
Python3使用TCP编写一个简易的文件下载器功能
2019/05/08 Python
python+tkinter实现学生管理系统
2019/08/20 Python
python 函数中的参数类型
2020/02/11 Python
美国知名的时尚购物网站:Anthropologie
2016/12/22 全球购物
职称自我鉴定
2013/10/15 职场文书
会议活动邀请函
2014/01/27 职场文书
开业主持词
2014/03/21 职场文书
期末学生评语大全
2014/04/24 职场文书
授权收款委托书
2014/09/23 职场文书
小学生优秀评语
2014/12/29 职场文书
工作自我推荐信范文
2015/03/25 职场文书
离婚起诉书范文2015
2015/05/19 职场文书
《雀魂PONG☆》4月1日播出 PV角色设定情报
2022/03/20 日漫