Подтвердить что ты не робот

Ссылка на статические файлы Flask с url_for

Как вы используете url_for в Flask для ссылки на файл в папке? Например, у меня есть некоторые статические файлы в папке static, некоторые из которых могут быть в подпапках, таких как static/bootstrap.

Когда я пытаюсь обслуживать файл из static/bootstrap, я получаю сообщение об ошибке.

 <link rel=stylesheet type=text/css href="{{ url_for('static/bootstrap', filename='bootstrap.min.css') }}">

Я могу ссылаться на файлы, которые не находятся в подпапках с этим, который работает.

 <link rel=stylesheet type=text/css href="{{ url_for('static', filename='bootstrap.min.css') }}">

Каков правильный способ ссылки на статические файлы с помощью url_for? Как использовать url_for для генерации URL-адресов для статических файлов на любом уровне?

4b9b3361

Ответ 1

По умолчанию для статических файлов по умолчанию используется static конечная точка. Кроме того, Flask приложение имеет следующие аргументы:

static_url_path: может использоваться для указания другого пути для статических файлов в Интернете. По умолчанию указывается имя папки static_folder.

static_folder: папка со статическими файлами, которые должны быть отправлены в static_url_path. По умолчанию используется статическая папка в корневом пути приложения.

Это означает, что аргумент filename будет относить относительный путь к вашему файлу в static_folder и преобразовать его в относительный путь в сочетании с static_url_default:

url_for('static', filename='path/to/file')

преобразует путь файла из static_folder/path/to/file в путь URL static_url_default/path/to/file.

Итак, если вы хотите получить файлы из папки static/bootstrap, вы используете этот код:

<link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='bootstrap/bootstrap.min.css') }}">

который будет преобразован в (с использованием настроек по умолчанию):

<link rel="stylesheet" type="text/css" href="static/bootstrap/bootstrap.min.css">

Также смотрите url_for документацию.