我们使用以下命令存储经过身份验证的用户(用户的模型)
@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对象,它引用了经过身份验证的用户的属性,如current_user.name,current_user.surname。
这是我们的数据模型:
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)
我们还查看了应用程序上下文,bluprints,但没有具有用户身份验证的MongoAlchemy的代码示例。
要访问同一请求上下文、不同函数或类中的变量,请使用 g 对象:
from flask import g
g.current_user = ..
....
current_user = g.current_user
要执行相同的操作,但在不同的请求之间,请使用会话字典:
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')
希望这有帮助..