如果语句返回,则为烧瓶形式

时间:2018-08-13 14:30:18

标签: python flask

我正在构建一个Flask应用程序,当我创建一个fee_handler路线时,即使我过去已经构建了这样的应用程序,我仍然会遇到错误。 我不确定这是什么问题。

@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: The view function did not return a valid response. The function either returned None or ended without a return statement.

如果将返回值移动到与if一致,则会收到局部变量错误。

3 个答案:

答案 0 :(得分:2)

在这种情况下,最好创建两条路径:一条用于服务表单,另一条接收值并将其呈现给用户:

@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)

form_html.html模板中,确保表单action的参数指向/handle_form

<form method='POST' action = '/handle_form'>
  ...
</form>

答案 1 :(得分:1)

假设请求方法为GET,因为您什么都不返回?当然,如果您尝试返回x, y, z and a语句范围之外的变量if,将导致错误提示,因为它们将不会被定义。

答案 2 :(得分:1)

使用默认值,然后将您的return语句推入if条件之外。

例如:

@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)