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