我创建了继承自FlaskForm的"LoginForm",当我尝试进入登录站点时,它会立即输入validate_on_submit((或is_Submitted((方法,而无需在现场执行任何操作。看起来网站正在生成 POST 请求,但我不知道为什么。
首先,我检查了validate_on_submit((,然后我尝试了is_submitted((。
@app.route("/login", methods=['POST','GET'])
def login():
form = LoginForm()
if form.is_submitted():
return "in if"
else:
return "in else"
return render_template("login.html", form=form)
<body>
<div class="content-section">
<form method="POST" action="">
{{ form.hidden_tag() }}
<h1 class="h3 mb-3 font-weight-normal">Login</h1>
<form class="form-group">
{{ form.username.label(class="form-control") }}
{{ form.username(class="form-control") }}
</form>
<form class="form-group">
{{ form.password.label(class="form-control") }}
{{ form.password(class="form-control") }}
</form>
<div class="checkbox mb-3">
</div>
<div class="form-group">
{{ form.submit(class="btn btn-outline-info") }}
</div>
</form>
</div>
</body>
class LoginForm(FlaskForm):
username = StringField('Username',
validators=[DataRequired()])
password = StringField('Password',
validators=[DataRequired()])
submit = SubmitField('Login')
现在,当我输入 localhost:5000/login 时,它会立即将我重定向到带有"inelse"语句的网站,我想在我输入一些数据后提交表单
你需要将代码包装成if request.method == 'POST'
:
@app.route("/login", methods=['POST','GET'])
def login():
form = LoginForm()
if request.method == 'POST':
if form.is_submitted():
return "in if"
else:
return "in else"
return render_template("login.html", form=form)