Python中实现带有记住我功能的LoginForm()表单教程
发布时间:2024-01-03 23:03:19
在Python中,可以使用Flask-WTF库来实现带有记住我功能的LoginForm()表单。下面是一个教程,帮助你了解如何实现这个功能,并附带一个使用例子。
1. 安装依赖库
首先,你需要安装以下依赖库:
- Flask-WTF:用于在Flask应用程序中处理表单
- Flask-Login:用于在Flask应用程序中处理用户认证和会话管理
可以使用以下命令安装这些库:
pip install flask-wtf flask-login
2. 创建Flask应用程序
创建一个Flask应用程序,并导入所需的模块和库:
from flask import Flask, render_template, redirect, url_for from flask_wtf import FlaskForm from wtforms import StringField, PasswordField, BooleanField, SubmitField from wtforms.validators import DataRequired from flask_login import LoginManager, UserMixin, login_user, login_required, logout_user app = Flask(__name__) app.config['SECRET_KEY'] = 'your-secret-key' login_manager = LoginManager(app) login_manager.login_view = 'login'
3. 创建LoginForm()表单类
创建LoginForm()表单类,并定义所需的字段和验证器:
class LoginForm(FlaskForm):
username = StringField('Username', validators=[DataRequired()])
password = PasswordField('Password', validators=[DataRequired()])
remember_me = BooleanField('Remember me')
submit = SubmitField('Sign In')
4. 创建User()用户类
创建一个User()用户类,用于管理用户信息:
class User(UserMixin):
def __init__(self, id):
self.id = id
self.username = 'user'
self.password = 'password'
@staticmethod
def get(user_id):
if user_id == 1:
return User(1)
5. 实现用户认证和会话管理
在Flask应用程序中,实现用户认证和会话管理的必要功能:
@login_manager.user_loader
def load_user(user_id):
return User.get(int(user_id))
@app.route('/login', methods=['GET', 'POST'])
def login():
form = LoginForm()
if form.validate_on_submit():
user = User.get(1)
if user and form.username.data == user.username and form.password.data == user.password:
login_user(user, remember=form.remember_me.data)
return redirect(url_for('protected'))
return render_template('login.html', title='Sign In', form=form)
@app.route('/protected')
@login_required
def protected():
return 'Protected Page'
@app.route('/logout')
@login_required
def logout():
logout_user()
return redirect(url_for('login'))
6. 创建login.html模板文件
在templates文件夹中创建login.html模板文件,并添加以下代码:
{% extends "base.html" %}
{% block content %}
<h1>{{ title }}</h1>
<form method="POST" action="{{ url_for('login') }}">
{{ form.hidden_tag() }}
<p>
{{ form.username.label }}
{{ form.username(size=20) }}
</p>
<p>
{{ form.password.label }}
{{ form.password(size=20) }}
</p>
<p>{{ form.remember_me() }} {{ form.remember_me.label }}</p>
<p>{{ form.submit() }}</p>
</form>
{% endblock %}
7. 创建base.html模板文件
在templates文件夹中创建base.html模板文件,并添加以下代码:
<!doctype html>
<title>{% block title %}{% endblock %}</title>
{% block content %}{% endblock %}
8. 运行应用程序
在应用程序所在的目录中,运行以下命令启动应用程序:
python app.py
现在,你可以在浏览器中访问http://localhost:5000/login 来查看并测试登录表单的记住我功能。
这就是一个使用Flask-WTF和Flask-Login库来实现带有记住我功能的LoginForm()表单的教程和使用例子。希望对你有帮助!
