简单易懂的使用flask_login.current_user.name()获取当前登录用户的姓名
发布时间:2024-01-03 20:18:04
Flask-Login是一个用于处理用户认证和管理用户会话的Flask扩展。它提供了一个current_user对象来代表当前登录的用户。
要使用current_user对象获取当前登录用户的姓名,需要完成以下步骤:
第一步:安装Flask-Login
在命令行中执行以下命令来安装Flask-Login:
pip install flask-login
第二步:创建Flask应用
在Python脚本中导入Flask、Flask-Login扩展和其他必要的模块。
from flask import Flask, render_template, redirect, url_for from flask_login import LoginManager, login_user, logout_user, login_required, current_user
创建Flask应用和初始化LoginManager。
app = Flask(__name__) app.config['SECRET_KEY'] = 'your_secret_key' # 设置一个密钥来保护session login_manager = LoginManager() login_manager.init_app(app)
第三步:模拟用户
创建一个简单的User类来模拟用户对象,其中包含一个name属性用于表示用户的姓名。
class User:
def __init__(self, name):
self.name = name
def get_id(self):
return self.name
第四步:实现用户认证和管理
创建一个用于模拟用户认证和管理的视图函数。
@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
name = request.form['name']
user = User(name)
login_user(user) # 登录用户
return redirect(url_for('index'))
return render_template('login.html')
@app.route('/logout')
@login_required
def logout():
logout_user() # 登出用户
return redirect(url_for('login'))
第五步:使用current_user获取当前登录用户的姓名
在需要获取当前登录用户的姓名的地方,使用current_user对象的name属性来获取。
@app.route('/')
@login_required
def index():
user_name = current_user.name
return f'Hello, {user_name}!'
完整的例子代码如下:
from flask import Flask, render_template, redirect, url_for, request
from flask_login import LoginManager, login_user, logout_user, login_required, current_user
app = Flask(__name__)
app.config['SECRET_KEY'] = 'your_secret_key'
login_manager = LoginManager()
login_manager.init_app(app)
class User:
def __init__(self, name):
self.name = name
def get_id(self):
return self.name
@login_manager.user_loader
def load_user(user_id):
# 根据用户ID加载用户对象
return User(user_id)
@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
name = request.form['name']
user = User(name)
login_user(user) # 登录用户
return redirect(url_for('index'))
return render_template('login.html')
@app.route('/logout')
@login_required
def logout():
logout_user() # 登出用户
return redirect(url_for('login'))
@app.route('/')
@login_required
def index():
user_name = current_user.name
return f'Hello, {user_name}!'
if __name__ == '__main__':
app.run()
在上述例子中,用户在访问首页时会检查是否已经登录,如果未登录,会重定向到登录页面。如果已经登录,则可以通过current_user对象的name属性获取当前登录用户的姓名,然后将其显示在页面中。
请注意,上述代码是一个简单的示例,仅用于演示如何使用Flask-Login获取当前登录用户的姓名。在实际应用中,您可能需要更复杂的用户认证逻辑和用户管理方式。
