如何用Flask检索会话数据?

2024-06-01 09:16:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我有烧瓶和表格的申请表。我可以在login()中看到 用户对象存储为

  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

现在我想找回用户

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

失败的消息如下:

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

Tags: to对象用户indbif烧瓶session
1条回答
网友
1楼 · 发布于 2024-06-01 09:16:21

很简单。如果要检索特定对象,只需在会话中添加变量的名称,例如session['nickname']

通过执行session['nickname'] = nickname,可以以相同的方式设置变量。

在您的情况下,您可以将其更改为

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

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

这是我用于登录的函数的简化版本。

@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('.....')

相关问题 更多 >