Маршрутизация — это механизм сопоставления URL-адреса непосредственно с кодом, который создает веб-страницу. Это помогает лучше управлять структурой веб-страницы и значительно повышает производительность сайта, а дальнейшие улучшения или модификации становятся действительно простыми. В Python маршрутизация реализована в большинстве веб-фреймов. Мы увидим примеры из фреймворка фляги в этой главе.
Маршрутизация во фляге
Декоратор route () во Flask используется для привязки URL-адреса к функции. В результате, когда URL упоминается в браузере, выполняется функция, чтобы дать результат. Здесь правило URL / hello привязано к функции hello_world () . В результате, если пользователь заходит на http: // localhost: 5000 / URL, выходные данные функции hello_world () будут отображаться в браузере.
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello Tutorialspoint'
if __name__ == '__main__':
app.run()
Когда мы запускаем вышеуказанную программу, мы получаем следующий вывод:
* Serving Flask app "flask_route" (lazy loading) * Environment: production WARNING: Do not use the development server in a production environment. Use a production WSGI server instead. * Debug mode: off * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit) 127.0.0.1 - - [06/Aug/2018 08:48:45] "GET / HTTP/1.1" 200 - 127.0.0.1 - - [06/Aug/2018 08:48:46] "GET /favicon.ico HTTP/1.1" 404 - 127.0.0.1 - - [06/Aug/2018 08:48:46] "GET /favicon.ico HTTP/1.1" 404 -
Мы открываем браузер и указываем на URL http: // localhost: 5000 /, чтобы увидеть результат выполнения функции.

Использование URL-переменных
Мы можем передавать переменные URL, используя route для создания URL на лету. Для этого мы используем функцию url_for (), которая принимает имя функции в качестве первого аргумента, а остальные аргументы — как переменную часть правила URL.
В приведенном ниже примере мы передаем имена функций в качестве аргументов функции url_for и выводим результат при выполнении этих строк.
from flask import Flask, url_for
app = Flask(__name__)
@app.route('/')
def index(): pass
@app.route('/login')
def login(): pass
@app.route('/user/')
def profile(username): pass
with app.test_request_context():
print url_for('index')
print url_for('index', _external=True)
print url_for('login')
print url_for('login', next='/')
print url_for('profile', username='Tutorials Point')
Когда мы запускаем вышеуказанную программу, мы получаем следующий вывод:
/ http://localhost/ /login /login?next=%2F /user/Tutorials%20Point
Перенаправление
Мы можем использовать функцию перенаправления, чтобы перенаправить пользователя на другой URL с помощью маршрутизации. Мы упоминаем новый URL как возвращаемое значение функции, которая должна перенаправлять пользователя. Это полезно, когда мы временно перенаправляем пользователей на другую страницу при изменении существующей веб-страницы.
from flask import Flask, abort, redirect, url_for
app = Flask(__name__)
@app.route('/')
def index():
return redirect(url_for('login'))
@app.route('/login')
def login():
abort(401)
# this_is_never_executed()
Когда приведенный выше код выполняется, базовый URL переходит на страницу входа в систему, которая использует функцию прерывания, так что код для страницы входа никогда не выполняется.