1

を使用して、認証されたユーザー (ユーザーのモデル) を保存しました

@app.route('/login', methods=['GET', 'POST'])
def login():
    ...
    try:
        current_user = User.query.filter(School_Login.mail == form_mail).first()
        if user.mail == form_mail and user.password == form_pass:
    ...

current_user.name、current_user.surname などの認証されたユーザーのプロパティを参照する current_user オブジェクトがあります。

これが私たちのデータモデルです:

class User(db.Document):
    mail = db.StringField()
    pass = db.StringField()
    name = db.StringField()
    ...

ここから問題が始まります: ユーザーの名前、姓などを表示するユーザー ダッシュボードを作成しました。ログイン関数で作成した current_user という名前のオブジェクトにアクセスしたいのですが、user_dashboard 関数から current_user にアクセスできません。また、関数からローカル変数にアクセスできないこともわかっていますが、どこを見逃したのでしょうか? この問題を達成する適切な方法は何ですか?

@app.route('/user-dashboard')
@login_required
def user_dashboard():
    name = current_user.name
    surname = current_user.surname
    return render_template('user-dashboard.html', name=name, surname=surname)

アプリケーション コンテキスト、ブループリントも確認しましたが、ユーザー認証を使用した MongoAlchemy のコード例はありません。

4

1 に答える 1

0

同じリクエスト コンテキスト内の別の関数またはクラス内の変数にアクセスするには、gオブジェクトを使用します。

from flask import g
g.current_user = ..
....
current_user = g.current_user

異なるリクエスト間で同じことを行うには、セッションdictを使用します。

from flask import session
session['current_user'] = ...
# Then, whenever you need it:
current_user = session.get('current_user', None)
if current_user is None:
    # maybe redirect to /login
# To remove the user:
session.pop('current_user')

お役に立てれば..

于 2016-07-10T13:25:29.683 に答える