Flask03 wtforms表单验证

1. 安装依赖包

pip install flask-wtf

# 安装邮箱验证器
pip install email_validator

2. app.py

from flask import Flask,request,render_template
from forms import LoginForm
app = Flask(__name__)

@app.route('/login',methods=['GET','POST'])
def login():
    if request.method == 'GET':
        return render_template("login.html")
    else:
        form = LoginForm(request.form)
        if form.validate():
            return "登陆成功"
        else:
            return "邮箱或密码错误"
@app.route('/')
def hello_world():  # put application's code here
    return 'Hello World!'


if __name__ == '__main__':
    app.run()

3.forms.py

import wtforms
from wtforms.validators import length,email

class LoginForm(wtforms.Form):
    email = wtforms.StringField(validators=[length(min=5,max=20),email()])
    password = wtforms.StringField(validators=[length(min=6,max=20)])

4.templates/login.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<!-- action里存放的地址是表单提交到哪个url的地址-->

<form action="/login" method="post">
    <table>
        <tbody>
        <tr>
            <td>邮箱:</td>
            <!-- name="email" 与 forms中的名字保持一致-->
            <td><input type="text" name="email"></td>
        </tr>
        <tr>
            <td>密码:</td>
            <!-- name="emai" 与 forms中的名字保持一致-->
            <td><input type="text" name="password"></td>
        </tr>
        <tr>
            <td></td>
            <td><button>登录</button></td>
        </tr>
        </tbody>
    </table>
</form>
</body>
</html>

GET POST 二者区别

1.Post传输数据时,不需要在URL中显示出来,而Get方法要在URL中显示。
2.Post传输的数据量大,可以达到2M,而Get方法由于受到URL长度的限制,只能传递大约1024字节.
3.Post顾名思义,就是为了将数据传送到服务器段,Get就是为了从服务器段取得数据.而Get之所以也能传送数据,只是用来设计告诉服务器,你到底需要什么样的数据.Post的信息作为http请求的内容,而Get是在Http头部传输的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当然,我可以帮你解答这个问题。你可以在Flask中使用WTForms库来验证登录信息。WTForms库提供了各种各样的验证函数,可以轻松实现表单验证。首先,你需要创建一个表单类,例如: ``` from wtforms import Form, StringField, PasswordField, validators class LoginForm(Form): username = StringField('Username', [validators.DataRequired()]) password = PasswordField('Password', [validators.DataRequired()]) ``` 在这个表单类里,我们定义了两个字段:username和password。这两个字段都使用了DataRequired这个验证器,表示这个字段是必填的。除了DataRequired外,WTForms还提供了很多其他的验证器,例如Email、Length、EqualTo等等。 接着,你需要在Flask中创建一个路由来处理登录请求: ``` from flask import Flask, render_template, request, redirect, url_for from your_database_module import User # 这里需要你自己实现获取用户数据的逻辑 from your_auth_module import login_required # 这里需要你自己实现登录验证的逻辑 from your_forms_module import LoginForm app = Flask(__name__) @app.route('/login', methods=['GET', 'POST']) def login(): form = LoginForm() if request.method == 'POST' and form.validate(): username = form.username.data password = form.password.data user = User.query.filter_by(username=username).first() if user and user.check_password(password): login_user(user) return redirect(url_for('index')) else: flash('Invalid username or password') return render_template('login.html', form=form) ``` 在这个路由里,我们首先创建了一个LoginForm实例,并将它传递到模板中进行渲染。当用户提交了登录表单时,我们就可以通过form.validate()来验证表单是否符合要求。如果表单验证通过,我们就可以获取表单数据,并通过自己的逻辑来获取用户信息。如果用户登录成功,我们就可以调用login_user函数来登录用户,然后重定向到首页。如果登录失败,我们就可以使用flash函数来显示错误信息。 当然,这只是一个简单的示例。实际应用中,你可能需要实现更复杂的验证逻辑,例如使用Captcha来防止恶意攻击等。但是,使用WTForms库可以帮助你轻松实现表单验证,从而提高应用的安全性和可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值