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 内置字符串处理函数的使用方法
Jun 11 Python
Python实现的数据结构与算法之基本搜索详解
Apr 22 Python
Django与遗留的数据库整合的方法指南
Jul 24 Python
Python中functools模块函数解析
Mar 12 Python
Python计算一个给定时间点前一个月和后一个月第一天的方法
May 29 Python
浅谈Pycharm调用同级目录下的py脚本bug
Dec 03 Python
Python3实现的反转单链表算法示例
Mar 08 Python
对python while循环和双重循环的实例详解
Aug 23 Python
python应用文件读取与登录注册功能
Sep 23 Python
多个python文件调用logging模块报错误
Feb 12 Python
Python标准库shutil模块使用方法解析
Mar 10 Python
pymongo insert_many 批量插入的实例
Dec 05 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
防止本地用户用fsockopen DDOS攻击对策
2011/11/02 PHP
PHP提交表单失败后如何保留已经填写的信息
2014/06/20 PHP
PHP基于session.upload_progress 实现文件上传进度显示功能详解
2019/08/09 PHP
JavaScript中获取未知对象属性的代码
2011/04/27 Javascript
JS/FLASH实现复制代码到剪贴板(兼容所有浏览器)
2013/05/27 Javascript
Javascript中Event属性搜集整理
2013/09/17 Javascript
javascript自定义的addClass()方法
2014/05/28 Javascript
JavaScript记录光标在编辑器中位置的实现方法
2016/04/22 Javascript
PHP+jquery+ajax实现分页
2016/12/09 Javascript
利用js查找数组中指定元素并返回该元素的所有索引示例
2017/03/29 Javascript
vue中$refs的用法及作用详解
2018/04/24 Javascript
解决vue项目打包后提示图片文件路径错误的问题
2018/07/04 Javascript
微信小程序导航栏跟随滑动效果的实现代码
2019/05/14 Javascript
详解ES6 Promise的生命周期和创建
2019/08/18 Javascript
基于JS+HTML实现弹窗提示是否确认提交功能
2020/06/17 Javascript
[38:21]2014 DOTA2国际邀请赛中国区预选赛5.21 TongFu VS LGD-CDEC
2014/05/22 DOTA
python实现从一组颜色中找出与给定颜色最接近颜色的方法
2015/03/19 Python
Python实现的连接mssql数据库操作示例
2018/08/17 Python
python将处理好的图像保存到指定目录下的方法
2019/01/10 Python
python制作抖音代码舞
2019/04/07 Python
django中media媒体路径设置的步骤
2019/11/15 Python
什么是python的必选参数
2020/06/21 Python
pycharm远程连接服务器并配置python interpreter的方法
2020/12/23 Python
Python爬虫定时计划任务的几种常见方法(推荐)
2021/01/15 Python
HTML5 Canvas绘制文本及图片的基础教程
2016/03/14 HTML / CSS
整理的15个非常有用的 HTML5 开发教程和速查手册
2011/10/18 HTML / CSS
马来西亚奢侈品牌购物商城:Valiram 247
2020/09/29 全球购物
PHP两种查询函数array/row的区别
2013/06/03 面试题
运动会通讯稿400字
2014/01/28 职场文书
教师校本培训方案
2014/02/26 职场文书
英语故事演讲稿
2014/04/29 职场文书
服装发布会策划方案
2014/05/22 职场文书
公安机关查摆剖析材料
2014/10/10 职场文书
离婚协议书范文
2015/01/26 职场文书
《少年闰土》教学反思
2016/02/18 职场文书
幼儿园2016圣诞节活动总结
2016/03/31 职场文书