解决web.py在SAE云中的Session使用问题
这段时间一直想尝试着在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' , 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' ) |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
2012-03-20 40个有创意的jQuery图片和内容滑动及弹出插件收藏集之二