解决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')
posted @   楚广明  阅读(3438)  评论(0编辑  收藏  举报
编辑推荐:
· 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图片和内容滑动及弹出插件收藏集之二
点击右上角即可分享
微信分享提示