TypeError: url_for () принимает 1 позиционный аргумент, но 2 были заданы - PullRequest
1 голос
/ 06 мая 2019

Если х = Огайо

Я хочу перенаправить пользователя в / weather / ohio

Все, что мне удалось получить на работу, это / погода /? X = Огайо

Я делаю это так, что будет запущен второй маршрут @ 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 = out, я получаю ошибку "TypeError: url_for () принимает 1 позиционный аргумент, но 2 было дано"

Ответы [ 3 ]

1 голос
/ 06 мая 2019

Вам нужно иметь вторую конечную точку с переменной пути и дать 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)

Взгляните на этот другой вопрос , возможно, для большей ясности.

0 голосов
/ 06 мая 2019

Если я правильно понимаю ваш вопрос, вы хотите динамический маршрут?

Взгляните сюда https://www.tutorialspoint.com/flask/flask_variable_rules.htm

@app.route("/weather/<variable>", methods = ['POST', 'GET'])
0 голосов
/ 06 мая 2019

Для переменных требуются ключевые аргументы:

url_for('add', variable=x)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...