【发布时间】:2019-12-07 11:34:56
【问题描述】:
我正在密切关注very brief tutorial from Flask-wtf here。我有一个问题,在我的 提交 页面表单中提交我的姓名后,它会给出“405 Method Not Allowed”消息,而不是将我引导到成功页面。
from flask import Flask, render_template, redirect
from forms import MyForm
app = Flask(__name__)
app.secret_key = 'mysecretKey'
@app.route('/submit', methods=('GET', 'POST'))
def submit():
form = MyForm()
if form.validate_on_submit():
return redirect('/success')
return render_template('submit.html', form=form)
@app.route('/success')
def success():
return "Well done for entering your name!"
if __name__ == '__main__':
app.run(debug=True)
我的表格在这里:
from flask_wtf import FlaskForm
from wtforms import StringField
from wtforms.validators import DataRequired
class MyForm(FlaskForm):
name = StringField('name', validators=[DataRequired()])
我的 submit.html 代码如下所示(就像在教程中一样):
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Password page</title>
</head>
<body>
<form method="POST" action="/">
{{ form.hidden_tag() }}
{{ form.name.label }} {{ form.name(size=20) }}
<input type="submit" value="Go">
</form>
</body>
</html>
编辑:if form.validate_on_submit() 条件不返回 True,因此不会执行循环的内容。我在其中添加了一个未执行的简单打印语句。
【问题讨论】:
-
可能
action="/"需要改成action="/submit" -
当然。
@app.route('/success')没有指定访问方法,因此默认为GET。你需要@app.route('/success', methods=['POST']) -
@roganjosh 添加后我仍然遇到同样的错误。
-
嗯,好的。什么路线引发错误(查看控制台以查看请求的去向)?似乎有些不对劲
-
尝试将
action="/"更改为action="{{ url_for('submit') }}"。我在这里遗漏了一些基本的东西,抱歉
标签: python flask flask-wtforms