フラスコ+ wtformsアプリケーションがあります。 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
簡単です。特定のオブジェクトを取得する場合は、セッション内で変数の名前を追加するだけです。 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('.....')