Ссылка на статические файлы колбы с url для


как вы используете url_for в колбе ссылаться на файл в папке? Например, у меня есть некоторые статические файлы в 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-адреса статических файлов на любом уровне?

2 60

2 ответа:

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

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

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

это означает что за 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.

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

<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 документация.

в моем случае у меня была специальная инструкция в конфигурационном файле nginx:

location ~ \.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)$ {
            try_files $uri =404;
    }

все клиенты получили '404', потому что nginx ничего не известно о колбе.

Я надеюсь, что это поможет кому-то.