form实现登录代码 博客
时间: 2023-11-21 09:05:32 浏览: 29
下面是一个基于 Flask 框架的登录表单实现代码,使用了 WTForms 库来处理表单验证和生成 HTML 表单:
```python
from flask import Flask, render_template, request
from flask_wtf import FlaskForm
from wtforms import StringField, PasswordField, SubmitField
from wtforms.validators import DataRequired
app = Flask(__name__)
app.config['SECRET_KEY'] = 'your_secret_key'
class LoginForm(FlaskForm):
username = StringField('用户名', validators=[DataRequired()])
password = PasswordField('密码', validators=[DataRequired()])
submit = SubmitField('登录')
@app.route('/login', methods=['GET', 'POST'])
def login():
form = LoginForm()
if form.validate_on_submit():
username = form.username.data
password = form.password.data
# 在此处编写登录逻辑
return f'欢迎回来,{username}!'
return render_template('login.html', form=form)
if __name__ == '__main__':
app.run()
```
在模板文件 `login.html` 中,可以使用 `form` 对象生成表单控件,如下所示:
```html
{% extends "base.html" %}
{% block content %}
<h1>登录</h1>
<form method="POST" action="{{ url_for('login') }}">
{{ form.csrf_token }}
{{ form.username.label }} {{ form.username }}
{{ form.password.label }} {{ form.password }}
{{ form.submit }}
</form>
{% endblock %}
```
其中 `{{ form.csrf_token }}` 是 Flask-WTF 提供的 CSRF 保护,`{{ form.username }}` 等语句会生成相应的表单控件。`{% extends "base.html" %}` 则表示这个页面继承了一个名为 `base.html` 的基础模板。
在这个示例中,`LoginForm` 类定义了表单控件的类型和验证规则。`form.validate_on_submit()` 方法会在提交表单时检验表单数据是否符合要求,如果符合要求则返回 `True`,否则返回 `False`。在登录逻辑中,可以从 `form.username.data` 和 `form.password.data` 中获取用户输入的用户名和密码。