web.py在SAE中的Session问题解决方法(使用mysql存储)
发布时间:2020-12-16 22:38:27 所属栏目:Python 来源:网络整理
导读:这段时间一直想尝试着在SAE中使用Python,初步选择了Web.py框架做为开发框架,但是可怜SAE上的资料少的可怜,有点问题基本上解决不了,今天解决一个Session在Session的存储问题,在SAE中不能直接用本地文件存储,好像是权限的原因,我现在采用的是保存在mysql
这段时间一直想尝试着在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,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') (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |