How to retrieve session data with Flask?

我的未来我决定 提交于 2019-12-09 14:40:56

问题


I have flask+wtforms application. I can see in login() user object stored as

  if user:
   if user.verify_password(form.password.data):
    flash('You have been logged in')
    user.logins += 1

    db.session.add(History(user.uid))
    db.session.commit()

    session['user'] = user

Now I wanted to retrieve the user

if 'user' in session:
       User=session.get('user')
       print User.nickname ###<< how to retrieve specific object member?

It fails with message like :

Instance <User at 0x8e5a64c> is not bound to a Session; attribute refresh operation cannot proceed

回答1:


It's simple. If you want to retrieve a specific object simply add the name of the variable within session, e.g. session['nickname'].

You can set the variable the same way, by doing session['nickname'] = nickname.

In your case you would change it to the following

if 'user' in session:
    user = session['user']
    print user

if 'nickname' in session:
    nickname = session['nickname']
    print nickname

This is an simplified version of the function I use for login.

@app.route('/login', methods=['POST'])
def login():
    """Authenticate User"""
    username = request.form['username'].strip()
    nickname = request.form['nickname'].strip()
    password = request.form['password']
    try:
        if Auth().VerifyLogin(username, password):
            session['username'] = username
            session['nickname'] = nickname
        else:
            # failed to login, do something.
    except Exception as why:
        app.logger.critical('.....')


来源:https://stackoverflow.com/questions/15591620/how-to-retrieve-session-data-with-flask

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!