web.py会话根本不起作用

时间:2014-04-18 06:04:58

标签: python session web.py

我已经做了我可以尝试的一切,但它根本不起作用。问题是session.get('t_yname')在检查会话值时总是返回None。

详细信息:

  1. 平台:max os x10.9.2
  2. python:2.7.3
  3. web.py:0.37是最新发布的版本
  4. 请帮帮我。

    我尝试过以两种方式创建会话对象:

    1.使用本地磁盘创建会话:

    global session
    app = web.application(urls, globals())
    if web.config.get('_session') is None:
        session = web.session.Session(app,web.session.DiskStore('sessions'),initializer=  {'t_yname': '', 't_auth':0})
        web.config._session = session
    else: 
        session = web.config._session
    

    2.with db

    global session
    app = web.application(urls, globals())
    
    if web.config.get('_session') is None:
        store = web.session.DBStore(model.db, 'sessions')
        session = web.session.Session(app, store)
        web.config._session = session
    else: 
        session = web.config._session
    

    其他一些代码:

    用户登录时设置会话值(按预期工作):

    class Login:
        def GET(self):
            return render.login()
        def POST(self):
            name=web.input(name='').name
            passwd=web.input(passwd='').passwd
            if name=='' or passwd=='':
                raise web.seeother("/login")
            ep=str(hashlib.md5(passwd).hexdigest().lower())
            for user in t_globals['users'][:]:
                if name==str(user.name) and ep==str(user.passwd):
                    session.t_auth=int(user.auth)
                    session.t_yname=str(user.name)
                    print "setted:" + session.get('t_yname')   ### work as expected here
                    raise web.seeother("/")
    
            raise web.seeother("/login")
    

    通过阅读会话值(不工作)来检查登录:

    def check_login():
        login=False
        sname = session.get('t_yname')    ## always None
        print sname
        if sname is not None and sname != "":
            for user in t_globals['users'][:]:
                if str(user.name)==sname:
                    login=True
            if login == False:
                session.t_yname=''
        return login
    

1 个答案:

答案 0 :(得分:1)

Finnaly我解决了这个问题。我使用session._initializer ['t_yname']而不是session.t_yname。但我不明白,webpy.org上的文件根本没有提及。