Python中如何通过flask_login.current_user.name()函数获取用户姓名
发布时间:2024-01-03 20:26:29
在使用 Flask-Login 扩展时,可以使用 current_user 变量来获取当前登录用户的信息。current_user 是一个全局变量,可以在任何需要获取当前用户信息的地方使用。
要获取用户姓名,可以使用 current_user.name 属性。该属性需要在用户登录成功后设置。
下面是一个使用 Flask-Login 获取用户姓名的示例:
首先,需要安装 Flask-Login 扩展。在终端中运行以下命令:
pip install flask-login
然后,在 Flask 应用中导入相应模块:
from flask import Flask, render_template, redirect, url_for from flask_login import LoginManager, UserMixin, login_user, login_required, logout_user, current_user
接下来,创建一个 Flask 应用实例,并设置一个密钥,用于加密用户的会话信息:
app = Flask(__name__) app.secret_key = 'your_secret_key'
然后,实例化一个 LoginManager 对象,并将其初始化应用:
login_manager = LoginManager(app)
定义一个简单的用户类,继承自 UserMixin 类,并设置一个用户姓名属性:
class User(UserMixin):
def __init__(self, id, name):
self.id = id
self.name = name
# 模拟一个简单的用户数据库
users = {'1': User('1', 'Alice'), '2': User('2', 'Bob')}
接下来,需要实现 Flask-Login 所需的几个回调函数。
首先是 load_user 函数,通过用户 ID 返回用户对象:
@login_manager.user_loader
def load_user(user_id):
return users.get(user_id)
然后是登录页面的处理函数:
@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
# 获取用户名和密码
username = request.form['username']
password = request.form['password']
# 模拟用户认证过程
user = None
for u in users.values():
if u.name == username:
user = u
break
if user is not None and password == 'password':
# 登录用户
login_user(user)
return redirect(url_for('index'))
# 登录失败,重新显示登录页面
flash('Invalid username or password')
return render_template('login.html')
最后,定义一个需要登录才能访问的首页,并显示当前用户的姓名:
@app.route('/')
@login_required
def index():
return f'Hello, {current_user.name}!'
以上代码中,@login_required 装饰器用于保护 index 视图,只有登录用户才能访问。
运行 Flask 应用,并访问 http://localhost:5000/login 登录页面。输入用户名和密码(密码为 "password"),登录成功后将重定向到首页,并显示当前用户的姓名。
