РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
54 of 643 menu

Функция url_for

Функция url_for строит URL по имени функции-обработчика. Это удобнее, чем прописывать адреса вручную: при изменении маршрута достаточно поменять правило в одном месте. Первым параметром передаётся имя функции в виде строки. Остальные именованные параметры подставляются в динамические части URL и превращаются в строку запроса.

Функцию url_for можно использовать как в Python-коде, так и в Jinja-шаблонах. Она импортируется из модуля flask.

Синтаксис

url_for(endpoint, **values)

Пример

Давайте построим URL для функции index:

from flask import Flask, url_for app = Flask(__name__) @app.route('/') def index(): return 'hello' with app.test_request_context(): res = url_for('index') print(res)

Результат выполнения кода:

"/"

Пример

Давайте построим URL для функции user, которая принимает параметр name:

from flask import Flask, url_for app = Flask(__name__) @app.route('/user/<name>') def user(name): return name with app.test_request_context(): res = url_for('user', name='abcde') print(res)

Результат выполнения кода:

"/user/abcde"

Пример

Лишние именованные параметры, которые не входят в маршрут, добавляются в строку запроса:

from flask import Flask, url_for app = Flask(__name__) @app.route('/user/<name>') def user(name): return name with app.test_request_context(): res = url_for('user', name='abcde', page=1) print(res)

Результат выполнения кода:

"/user/abcde?page=1"

Пример

Давайте построим URL внутри Jinja-шаблона и сделаем ссылку:

from flask import Flask, render_template app = Flask(__name__) @app.route('/') def index(): return render_template('index.html') @app.route('/user/<name>') def user(name): return name
<a href="{{ url_for('user', name='abcde') }}">user</a>

Результат выполнения кода:

<a href="/user/abcde">user</a>

Пример

Давайте выполним перенаправление на построенный URL с помощью функции redirect:

from flask import Flask, url_for, redirect app = Flask(__name__) @app.route('/') def index(): return redirect(url_for('user', name='abcde')) @app.route('/user/<name>') def user(name): return name

Результат выполнения кода для адреса /:

abcde

Смотрите также

  • функцию redirect,
    которая выполняет перенаправление на другой адрес
  • функцию abort,
    которая прерывает запрос с кодом ошибки
  • конвертер int,
    который принимает целое число в URL
  • конвертер path,
    который принимает путь с косыми чертами
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить