Flask 如何将 flask-login 添加到 flask-admin
在本文中,我们将介绍如何在 Flask 应用程序中使用 flask-login 插件,并将其集成到 flask-admin 中。Flask-login 是一个用于身份验证和会话管理的插件,而 flask-admin 是一个用于创建管理界面的插件。
阅读更多:Flask 教程
什么是 Flask-login?
Flask-login 是一个用于处理用户身份验证和会话管理的插件。它提供了一组简单的接口和装饰器,让开发者可以轻松地处理用户登录、保护路由以及获取当前登录用户的信息。Flask-login 还提供了记住我功能和安全的会话管理。
在开始之前,首先确保已经安装了 Flask 和 Flask-login:
pip install Flask
pip install Flask-Login
集成 flask-login 到 flask-admin
以下是将 flask-login 集成到 flask-admin 的步骤:
步骤 1: 创建 Flask 应用和数据库
首先,我们需要创建一个基本的 Flask 应用。在此应用中,我们将使用 SQLAlchemy 作为数据库。以下是一个简单的 Flask 应用和数据库的示例:
from flask import Flask, render_template, redirect, url_for
from flask_admin import Admin
from flask_admin.contrib.sqla import ModelView
from flask_login import LoginManager, UserMixin, login_user, login_required, current_user, logout_user
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///database.db'
app.config['SECRET_KEY'] = 'your_secret_key'
db = SQLAlchemy(app)
admin = Admin(app)
login_manager = LoginManager(app)
class User(UserMixin, db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(80), unique=True)
password = db.Column(db.String(80))
@login_manager.user_loader
def load_user(user_id):
return User.query.get(int(user_id))
admin.add_view(ModelView(User, db.session))
步骤 2: 创建登录页面和认证路由
接下来,我们需要创建登录页面和认证路由。在这个示例中,我们将使用 Flask-WTF 进行表单验证。以下是一个简单的示例:
from flask_wtf import FlaskForm
from wtforms import StringField, PasswordField, SubmitField
from wtforms.validators import DataRequired
class LoginForm(FlaskForm):
username = StringField('Username', validators=[DataRequired()])
password = PasswordField('Password', validators=[DataRequired()])
submit = SubmitField('Login')
@app.route('/login', methods=['GET', 'POST'])
def login():
form = LoginForm()
if form.validate_on_submit():
user = User.query.filter_by(username=form.username.data).first()
if user and user.password == form.password.data:
login_user(user)
return redirect(url_for('admin.index'))
return render_template('login.html', form=form)
步骤 3: 创建登录页面模板和登出路由
在步骤 2 中,我们创建了一个简单的登录表单。现在,我们需要创建一个对应的登录页面模板,并添加一个登出路由。以下是示例:
{% extends 'admin/layout.html' %}
{% block body %}
<h2>Login</h2>
<form method="POST">
{{ form.hidden_tag() }}
{{ form.username.label }} {{ form.username }}
{{ form.password.label }} {{ form.password }}
{{ form.submit }}
</form>
{% endblock %}
@app.route('/logout')
@login_required
def logout():
logout_user()
return redirect(url_for('login'))
步骤 4: 启动应用
最后,我们只需在 Flask 应用中启动 flask-admin,并执行应用的 run() 方法。
if __name__ == '__main__':
app.run(debug=True)
总结
在本文中,我们学习了如何将 flask-login 插件添加到 flask-admin 中。首先,我们创建了一个 Flask 应用和数据库,并通过 SQLAlchemy 进行了连接。然后,我们创建了登录页面和认证路由,使用了 Flask-WTF 进行表单验证。最后,我们创建了登录页面的模板和登出路由,并将 flask-admin 添加到了应用中。通过这些步骤,我们成功将 flask-login 集成到了 flask-admin 中,实现了身份验证和会话管理的功能。
以上就是关于如何将 flask-login 添加到 flask-admin 的介绍。希望本文对您有所帮助,并能够顺利地集成 flask-login 到您的 Flask 应用中。