Flask定义一个表单界面,分为账户名和密码登录,后端视图函数对表单上输入的信息进行比对, 账户名为admin密码为123456若正确利用消息闪现提示登陆正确并跳转界面, 将用户名和密码存入session中 若不正确用消息闪现提示用户名或密码错误
时间: 2024-09-24 08:28:13 浏览: 39
在Flask框架中,创建一个包含账号名和密码的表单界面用于用户登录的过程通常涉及以下几个步骤:
1. 首先,你需要安装`flask-wtf`库,它提供了一个方便的方式来处理HTML表单和验证。在项目目录下运行`pip install flask-wtf`命令。
2. 导入库并设置一个基础模板,如`base.html`,其中包含表单元素:
```html
<!-- base.html -->
<!DOCTYPE html>
<html lang="en">
<head>
<title>Login</title>
<!-- Include WTForms CSS and JavaScript for the form handling -->
<link rel="stylesheet" href="{{ url_for('static', filename='css/wtforms.css') }}">
</head>
<body>
<form method="post" action="{{ url_for('login') }}">
{{ form.csrf_token }}
<div>{{ form.username.label }} {{ form.username }}</div>
<div>{{ form.password.label }} {{ form.password }}</div>
<input type="submit" value="Login">
</form>
</body>
</html>
```
3. 定义`LoginForm`,它是WTForms中的一个类,用来描述登录表单:
```python
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("Log In")
```
4. 创建后端视图函数`login()`,在这里接收POST请求,处理表单数据,并检查用户输入:
```python
from flask import render_template, redirect, session, flash
from . import app
from .forms import LoginForm
@app.route('/login', methods=['GET', 'POST'])
def login():
form = LoginForm()
if form.validate_on_submit(): # 如果表单验证通过
if form.username.data == "admin" and form.password.data == "123456":
# 登录成功
session['username'] = form.username.data
flash("Login successful!", "success")
return redirect('/')
else:
# 登录失败
flash("Invalid username or password.", "danger")
return render_template('base.html', form=form)
```
5. 使用`flash()`函数显示消息闪现通知用户登录结果。如果需要在页面间保持登录状态,可以使用`session`。
当用户提交正确的信息,会看到“Login successful!”消息并在首页重定向;如果用户名或密码错误,则会有错误消息提示。