Flask - Как отправить переменные на разные маршруты без перенаправления?

1

Я сделал два маршрута в Фласке. Я хочу отправлять переменные на маршрут с другого маршрута, но я не хочу, чтобы он перенаправлял ему маршрут.

@app.route('/')
def index():
    name = 'Hello'
    return redirect(url_for('a', name=name)

@app.route('/<name>')
def a(name):
    return name

Я хочу, чтобы мой индекс не перенаправлялся на маршрут 'a'. 'a' Маршрут" должен работать только тогда, когда я набираю его вручную.

Теги:
flask
routes

1 ответ

1
Лучший ответ

И index() и a() - действительно просто функции. Вы можете позвонить им напрямую; поэтому в index() вы можете вызвать a(name='Hello') и вернуть результат этого вызова:

@app.route('/')
def index():
    name = 'Hello'
    return a(name=name)

@app.route('/<name>')
def a(name):
    return name

Вы можете также зарегистрировать несколько URL-адресов для одной функции просмотра, включая использование значений по умолчанию для путей, в которых нет переменных. Вам тогда не нужно ничего называть:

@app.route('/<name>')
@app.route('/', defaults={'name': 'Hello'})
def a(name):
    return name

Когда / URL-адрес сопоставляется, вызывается a(name='Hello'), потому что карта по defaults устанавливает name.

Для получения дополнительной информации см. Раздел "Регистрации URL-адресов" в документации API флагов.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню