簡體   English   中英

如何用Flask取回session的數據?

[英]How to retrieve session data with Flask?

我有 flask+wtforms 應用程序。 我可以在 login() 中看到用戶 object 存儲為

  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

這很簡單。 如果您想檢索特定對象,只需在會話中添加變量的名稱,例如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('.....')

要查看 session 中的所有內容,您可以print(session) 你應該得到這樣的回應

<SecureCookieSession {'_flashes': [('info', 'Duplication is not allowed ')], 'el1-s': 'Physics', 'el1grade-s': 'B2', 'el2-s': 'E-Maths', 'el2grade-s': 'A1', 'english-s': 'A1', 'mathematics-s': 'A1', 'science-s': 'A1', 'social-s': None}>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM