flask_wtf的form表单validate_on_submit()总是返回false

本文详细介绍了如何解决HTML表单使用POST方法时遇到的问题,包括修改<form>标签的method属性,添加CSRF保护,以及使用DataRequired验证器确保表单字段不为空。这些步骤对于提高表单安全性及数据完整性至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

出现这种问题的原因如下:

1、html文件的<form>中的method改为post方法。

<form  method="post">
</form>

2、html文件中加入csrf保护:hidden.tag() 或者 csrf_token()

<forn method="post">
    {{form.hidden_tag()}}
    {{form.name.label}} {{form.name()}}
    {{form.pwd.label}} {{form.pwd}}
    {{form.submit()}}

</form>

或者

<forn method="post">
   
    {{form.name.label}} {{form.name()}}
    {{form.pwd.label}} {{form.pwd}}
    {{form.submit()}}
    {{form.csfr_token()}}

</form>

3、form表单添加DataRequired

class LoginForm(FlaskForm):
    name = StringField(
        label="name",
        validators=[DataRequired("请输入名称!")]
        )

 

在 Python 中,`Flask-WTF` 是一个用于简化 Flask 应用中表单处理的扩展库。它基于 `WTForms`,提供了与 Flask 集成的便捷方式来创建和验证表单。 ### 下载与安装 要下载并安装 `Flask-WTF`,可以使用 Python 的包管理工具 `pip`,这是最简单且推荐的方式。 #### 安装命令: ```bash pip install Flask-WTF ``` 如果你使用的是虚拟环境(如 `venv` 或 `conda`),请确保你已经激活了相应的环境,以便将库安装到正确的位置。 #### 使用国内镜像加速安装(可选): 由于网络原因,有从 PyPI 安装可能会比较慢。你可以通过指定国内镜像源来加速安装过程。例如,使用清华大学的镜像: ```bash pip install Flask-WTF -i https://pypi.tuna.tsinghua.edu.cn/simple ``` ### 验证安装 安装完成后,可以通过以下方式验证是否成功导入 `Flask-WTF`: ```python from flask_wtf import FlaskForm from wtforms import StringField, validators class MyForm(FlaskForm): name = StringField('Name', [validators.DataRequired()]) # 如果没有报错,则说明安装成功 ``` ### 基本使用示例 下面是一个简单的 Flask 应用中使用 `Flask-WTF` 的示例: ```python from flask import Flask, render_template_string, request from flask_wtf import FlaskForm from wtforms import StringField, validators app = Flask(__name__) app.config['SECRET_KEY'] = 'your_secret_key_here' class MyForm(FlaskForm): name = StringField('Name', [validators.DataRequired()]) @app.route('/', methods=['GET', 'POST']) def index(): form = MyForm() if form.validate_on_submit(): return f'Hello {form.name.data}' return render_template_string(''' <form method="post"> {{ form.csrf_token }} {{ form.name.label }} {{ form.name }} <input type="submit" value="Submit"> </form> ''', form=form) if __name__ == '__main__': app.run(debug=True) ``` 运行上述代码后,访问 `http://127.0.0.1:5000/`,你将看到一个带有输入框的表单提交后,会显示“Hello + 输入内容”。 ### 注意事项 - 确保你已安装 Flask[^4]。 - `Flask-WTF` 依赖于 `Werkzeug` 和 `WTForms`,这些都会在安装自动安装。 - 设置 `SECRET_KEY` 是必须的,否则在使用表单会出现错误
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值