Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如果语句返回,则返回Flask表单_Python_Flask - Fatal编程技术网

Python 如果语句返回,则返回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 =

我正在构建一个flask应用程序,当我创建一个费用处理程序路径时,我不断得到一个错误,即使我在过去构建了一个这样的应用程序。 我不确定这里有什么问题

@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会做的。谢谢