Статические файлы Masonite (Static Files)
Masonite делает использование статических файлов чрезвычайно простым. Whitenoise оборачивает приложение WSGI и прослушивает определенные запросы URI, которые зарегистрированы в ваших файлах конфигурации.
Конфигурация
Все конфигурации, относящиеся к статическим файлам, можно найти в файле config/filesystem.py
.
Константа STATICFILES
представляет собой словарь, в качестве ключей - каталоги, а значения это
псевдонимы.
Каталоги, которые следует включать в качестве ключей это расположение ваших статических файлов в виде
относительного пути, начинающегося от корня вашего приложения. Например, ваши файлы css
находятся
в storage/assets/css
, укажите этот путь в качестве ключа. В качестве значения укажите псевдоним,
который вы хотите использовать в своих шаблонах. В этом примере мы будем использовать css/
в
качестве псевдонима.
Для этого настройки константы STATICFILES
должны выглядеть так:
config/storage.py
Теперь в наших шаблонах мы можем использовать:
Готовый путь будет выглядеть такstorage/assets/css/style.css
.
Шаблонная функция статики
Все шаблоны имеют функцию, которую можно использовать для получения местоположения статических файлов. Вы можете указать драйвер и место расположения, используя имя драйвера или запись через точку.
Например:
....
's3': {
's3_client': 'sIS8shn...'
...
'path': 'https://s3.us-east-2.amazonaws.com/bucket'
},
....
В результате получим:
Вы также можете указать расположение файлов в виде словаря и использовать запись через точку:
....
's3': {
's3_client': 'sIS8shn...'
...
'path': {
'east': 'https://s3.us-east-2.amazonaws.com/east-bucket',
'west': 'https://s3.us-west-16.amazonaws.com/west-bucket'
},
}
....
И используйте запись через точку, следующим образом:
...
<img src="{{ asset('s3.east', 'profile.jpg') }}" alt="profile" />
...
<img src="{{ asset('s3.west', 'profile.jpg') }}" alt="profile" />
...
Обслуживание “корневых” ("Root") файлов
Иногда вам может понадобиться обслуживать файлы, которые обычно находятся в корневом каталоге вашего
приложения, например, robots.txt
или manifest.json
. Эти файлы могут иметь псевдоним в вашей константе
STATICFILES
, в файле config/filesystem.py
. Файлы необязательно должны находиться в корне вашего
проекта, вместо этого они могут находиться в каталоге storage/root
или storage/public
, и иметь
псевдоним с простым расширением /
.
Например, базовая настройка будет выглядеть так:
И вы можете указать это в STATICFILES:
config/storage.py
Теперь у вас будет доступ к localhost:8000/robots.txt
, robots.txt
будет правильно обработан,
и он сможет правильно индексироваться поисковыми системами.
Вот и все! Работать со статическими файлами чрезвычайно просто.