TypeError:url_for()接受1个位置参数,但给出了2个

时间:2019-05-06 15:18:15

标签: python python-3.x flask url-for

如果x = ohio

我想将用户重定向到/ weather / ohio

我能上班的只有/ weather /?x = ohio

我正在这样做,因此将运行第二条路线@ app.route(“ / weather /”)。我不确定我缺少什么。这是加载/ weather / ohio的最佳方法,其中ohio是从表单加载的变量。

    @app.route("/weather/", methods = ['POST', 'GET'])
def weather():
    if request.method == 'POST':
        x = request.form['search_location']
        return redirect(url_for('weather', x=x))
        #print (y)
    else:
        return render_template("weather.html")

如果我将x =取出,则会出现错误“ TypeError:url_for()接受1个位置参数,但给出了2个位置”

3 个答案:

答案 0 :(得分:1)

您需要使第二个端点具有路径变量,并为url_for()提供与该端点关联的函数的名称:

@app.route("/weather", methods = ["POST", "GET"])
def weather():
    if request.method == "POST":
        x = request.form["search_location"]
        return redirect(url_for("weather_location", x=x))
    else:
        return render_template("weather.html")

@app.route("/weather/<x>")
def weather_location(x):
    return "It's always sunny in {}".format(x)

看一下this other question可能会更清楚一些。

答案 1 :(得分:0)

它使用关键字参数作为变量:

url_for('add', variable=x)

答案 2 :(得分:0)

如果我正确理解了您的问题,您想要一条动态路线吗?

在这里https://www.tutorialspoint.com/flask/flask_variable_rules.htm

@app.route("/weather/<variable>", methods = ['POST', 'GET'])