这段时间一直想尝试着在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\')