Конвертер path
Конвертер path применяется внутри угловых скобок
маршрута и указывает Flask, что параметр должен принять
всю оставшуюся часть URL, включая символы слэша /.
Обычный строковый параметр останавливается на первом слэше,
а path захватывает весь путь целиком. В обработчик
значение приходит в виде строки.
Синтаксис
@app.route('/<path:name>')
Пример
Давайте примем путь из URL в параметр name:
from flask import Flask
app = Flask(__name__)
@app.route('/files/<path:name>')
def files(name):
return name
Результат выполнения кода для адреса /files/docs/article:
docs/article
Пример
Давайте сравним конвертер path с обычным строковым
параметром и посмотрим, как они по-разному разбирают один
и тот же адрес:
from flask import Flask
app = Flask(__name__)
@app.route('/user/<name>')
def user(name):
return name
@app.route('/docs/<path:name>')
def docs(name):
return name
Обращение к адресу /user/abcde вернёт:
abcde
Обращение к адресу /docs/abcde/hello вернёт:
abcde/hello
Пример
Давайте используем конвертер path для построения
ссылки на файл через функцию url_for:
from flask import Flask, url_for
app = Flask(__name__)
@app.route('/files/<path:name>')
def files(name):
return name
with app.test_request_context():
print(url_for('files', name='docs/article'))
Результат выполнения кода:
"/files/docs/article"