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重新引入被覆盖的自带function
Jul 16 Python
Python实现好友全头像的拼接实例(推荐)
Jun 24 Python
利用Python操作消息队列RabbitMQ的方法教程
Jul 19 Python
python使用turtle库绘制树
Jun 25 Python
Python使用分布式锁的代码演示示例
Jul 30 Python
pandas.dataframe按行索引表达式选取方法
Oct 30 Python
python使用zip将list转为json的方法
Dec 31 Python
Python远程视频监控程序的实例代码
May 05 Python
Django admin 实现search_fields精确查询实例
Mar 30 Python
python网络编程之五子棋游戏
May 14 Python
Django微信小程序后台开发教程的实现
Jun 03 Python
实例讲解Python中sys.argv[]的用法
Jun 03 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
drupal 代码实现URL重写
2011/05/04 PHP
php后台多用户权限组思路与实现程序代码分享
2012/02/13 PHP
浅析使用Turck-mmcache编译来加速、优化PHP代码
2013/06/20 PHP
jquery 页面全选框实践代码
2010/04/02 Javascript
JQuery中each()的使用方法说明
2010/08/19 Javascript
JavaScript对象之间的转换 jQuery对象和原声DOM
2011/03/07 Javascript
用Juery网页选项卡实现代码
2011/06/13 Javascript
javascript学习笔记(三)BOM和DOM详解
2014/09/30 Javascript
js中取得变量绝对值的方法
2015/01/03 Javascript
基于javascript实现图片切换效果
2016/04/17 Javascript
浅谈js控制li标签排序问题 js调用php函数的方法
2016/10/16 Javascript
关于angularJs指令的Scope(作用域)介绍
2016/10/25 Javascript
简单谈谈gulp-changed插件
2017/02/21 Javascript
微信小程序实现城市列表选择
2018/06/05 Javascript
基于vue实现可搜索下拉框定制组件
2020/03/26 Javascript
vue响应式系统之observe、watcher、dep的源码解析
2019/04/09 Javascript
使用JS实现鼠标放上图片进行放大离开实现缩小功能
2021/01/27 Javascript
总结python爬虫抓站的实用技巧
2016/08/09 Python
python 实现对文件夹内的文件排序编号
2018/04/12 Python
python顺序的读取文件夹下名称有序的文件方法
2018/07/11 Python
解决tensorflow1.x版本加载saver.restore目录报错的问题
2018/07/26 Python
python判断输入日期为第几天的实例
2018/11/13 Python
Python调用服务接口的实例
2019/01/03 Python
wxpython+pymysql实现用户登陆功能
2019/11/19 Python
python实现简单图书管理系统
2019/11/22 Python
nginx+uwsgi+django环境搭建的方法步骤
2019/11/25 Python
python 爬虫基本使用——统计杭电oj题目正确率并排序
2020/10/26 Python
adidas泰国官网:adidas TH
2020/07/11 全球购物
中学实习教师自我鉴定
2013/12/12 职场文书
2014领导班子四风剖析对照检查材料思想汇报
2014/09/20 职场文书
财务审计整改报告
2014/11/06 职场文书
房屋分割离婚协议书范本
2014/12/01 职场文书
专家推荐信范文
2015/03/26 职场文书
Python函数中apply、map、applymap的区别
2021/11/27 Python
python工具dtreeviz决策树可视化和模型可解释性
2022/03/03 Python
MySQL 中如何归档数据的实现方法
2022/03/16 SQL Server