gpt4 book ai didi

python - Flask validate_on_submit 始终为 False

转载 作者:太空宇宙 更新时间:2023-11-03 14:47:05 24 4
gpt4 key购买 nike

我知道有类似的问题已经得到解答。如果 Form 继承了 FlaskForm,那么 csrf_enabled 就不是问题了,并且模板有 form.hidden_​​tag()

我有以下 flask 应用程序。

## Filenname: app.py

from flask import Flask, render_template, redirect, url_for, flash, request
from flask_wtf import FlaskForm
from wtforms import StringField, SubmitField, SelectField
from wtforms.validators import DataRequired

app = Flask(__name__)

app.config["SECRET_KEY"] = "secret"



class DataForm(FlaskForm):
name = StringField("Name", validators=[DataRequired()])
gender = SelectField("Gender", validators=None, choices=[(1, 'M'), (2, "F")])
submit = SubmitField("Submit", validators=None)



@app.route('/index', methods=["GET", "POST"])
def index():
form = DataForm(request.form)
print(form.validate_on_submit())
if form.validate_on_submit():
print(form.validate())
print(form.name)
flash("THIS IS FLASH")
title="hello"
return redirect(url_for('output'))
return render_template('index.html', form=form)



@app.route('/output', methods=["GET", "POST"])
def output():
title = "hello"
form = DataForm()
print(form.validate())
return render_template('output.html', title=title)


app.run(debug=False)

index.html模板如下:

<html>
<body>
{% with messages = get_flashed_messages() %}
{{ messages }}
{% endwith %}



<form action="" method="GET">
{{ form.hidden_tag() }}
{{ form.name.label }}
{{ form.name() }}
{% for error in form.name.errors %}
<span style="color: red;">[{{ error }}]</span>
{% endfor %}

<hr>

{{ form.gender.label }}
{{ form.gender() }}

{{ form.submit() }}
</form>
</body>
</html>

点击提交按钮后,执行永远不会进入index函数中的if form.validate_on_submit() block 。

我还删除了所有验证器,validate_on_submit block 中的代码仍然无法访问。打印 form.validate_on_submit() 始终为 false。

最佳答案

所以有多个问题。

  1. 将您的选择更改为字符串:

    choices=[('1', 'M'), ('2', "F")]
  2. 将您的表单方法更改为 POST,因为 validate_on_submit() 需要它:

    <form action="" method="POST">
  3. 此外,要调试其他可能的错误(如 CSRF),请将此添加到您的模板中:

    {% if form.errors %}
    {{ form.errors }}
    {% endif %}

这为我修复了你的代码。

关于python - Flask validate_on_submit 始终为 False,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48455689/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com