Python 如果语句返回,则返回Flask表单
我正在构建一个flask应用程序,当我创建一个费用处理程序路径时,我不断得到一个错误,即使我在过去构建了一个这样的应用程序。 我不确定这里有什么问题Python 如果语句返回,则返回Flask表单,python,flask,Python,Flask,我正在构建一个flask应用程序,当我创建一个费用处理程序路径时,我不断得到一个错误,即使我在过去构建了一个这样的应用程序。 我不确定这里有什么问题 @app.route('/handle_form', methods=['POST', 'GET']) def fee_handler(): if request.method == "POST": x = request.form['x'] y = request.form['y'] z =
@app.route('/handle_form', methods=['POST', 'GET'])
def fee_handler():
if request.method == "POST":
x = request.form['x']
y = request.form['y']
z = request.form['z']
a = request.form['a']
fee.feeCreation(x, y, z, a)
return render_template('result.html', x=x, y=y, z=z, a=a)
TypeError:view函数未返回有效响应。函数返回None或结束时没有返回语句。
如果我将返回值移动到与
If
一致的位置,则会得到一个局部变量错误 因为如果请求方法是GET
,那么您不会返回任何内容,我想是吧?当然,如果您试图将变量x、y、z和a
返回到if
语句的范围之外,您会得到一个错误,因为它们不会被定义 使用默认值,然后将return语句推到if条件之外
Ex:
@app.route('/handle_form', methods=['POST', 'GET'])
def fee_handler():
x, y, z, a = None, None, None, None
if request.method == "POST":
x = request.form['x']
y = request.form['y']
z = request.form['z']
a = request.form['a']
fee.feeCreation(x, y, z, a)
return render_template('result.html', x=x, y=y, z=z, a=a)
在这种情况下,最好创建两个路由:一个用于服务表单,另一个用于接收值并将其返回给用户:
@app.route('/enter_values', methods=['GET'])
def enter_values():
return flask.render_template('form_html.html')
@app.route('/handle_form', methods=['POST'])
def fee_handler():
x = request.form['x']
y = request.form['y']
z = request.form['z']
a = request.form['a']
fee.feeCreation(x, y, z, a)
return render_template('result.html', x=x, y=y, z=z, a=a)
在表单html.html
模板中,确保表单操作
参数指向/handle\u表单
:
<form method='POST' action = '/handle_form'>
...
</form>
...
啊,这是有道理的,我刚刚检查了一下,我发现它是一个获取
,但是我想把它变成一个发布
,我该如何实现呢?发布
将是用户提交表单时的请求类型;至少它应该是这样工作的..我想出来了,我的HTML
有一个错误,但是感谢您的输入!我已经这样设置了它,将表单句柄保留在原始问题之外,问题是我放置了methods
而不是method
,这个语法错误导致我的请求默认为GET
,这显然是flask会做的。谢谢