zoukankan      html  css  js  c++  java
  • 解决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')
  • 相关阅读:
    GIL 全局解释器
    线程
    队列 Queue 与 生产者消费模型
    进程 与 并发(进程打开方式,互斥锁)
    【JAVA设计模式】单例模式
    【排序】桶排序
    【排序】选择排序
    【排序】插入排序
    【排序】冒泡排序
    JVM 优化之逃逸分析
  • 原文地址:https://www.cnblogs.com/chu888chu888/p/2971389.html
Copyright © 2011-2022 走看看