这段时间一直想尝试着在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')
PHP经典实例(第2版)能够为您节省宝贵的Web开发时间。有了这些针对真实问题的解决方案放在手边,大多数编程难题都会迎刃而解。《PHP经典实例(第2版)》将PHP的特性与经典实例丛书的独特形式组合到一起,足以帮您成功地构建跨浏览器的Web应用程序。在这个修订版中,您可以更加方便地找到各种编程问题的解决方案,《PHP经典实例(第2版)》中内容涵盖了:表单处理;Session管理;数据库交互;使用We









