StaticFilesConfig¶
StaticFilesConfig — это простой набор конфигураций, который при передаче активирует встроенные возможности Esmerald. Когда объект StaticFilesConfig передается в экземпляр приложения, он включает поддержку обслуживания статических файлов.
Check
StaticFiles считаются app
и являются полноценным приложением Lilya, поэтому использование
Lilya StaticFiles также будет работать с Esmerald.
StaticFilesConfig и приложение¶
Для использования StaticFilesConfig в экземпляре приложения.
from pathlib import Path
from esmerald import Esmerald, StaticFilesConfig
static_files_config = StaticFilesConfig(
path="/static", packages=["mypackage"], directory=Path("static")
)
app = Esmerald(static_files_config=static_files_config)
С пакетами и директорией:
from pathlib import Path
from esmerald import Esmerald, StaticFilesConfig
static_files_config = StaticFilesConfig(
path="/static", packages=["mypackage"], directory=Path("static")
)
app = Esmerald(static_files_config=static_files_config)
Параметры¶
Все параметры и значения по умолчанию доступны в справочнике StaticFilesConfig.
StaticFilesConfig и настройки приложения¶
StaticFilesConfig можно настроить напрямую через создание экземпляра приложения, а также через настройки.
from pathlib import Path
from esmerald import EsmeraldAPISettings, StaticFilesConfig
class CustomSettings(EsmeraldAPISettings):
@property
def static_files_config(self) -> StaticFilesConfig:
"""
Simple configuration indicating where the statics will be placed in
the application.
"""
return StaticFilesConfig(path="/static", packages=["mypackage"], directory=Path("static"))
Это позволит вам поддерживать чистоту настроек и их разделение. Так же избегать перегруженного экземпляра Esmerald.
Множественные каталоги и пути (без перехода)¶
Предположим, у вас есть несколько каталогов, к которым вы хотели бы получить доступ, включая каталог node_modules/
.
Это возможно сделать, передав несколько конфигураций StaticFilesConfig
, как показано ниже:
from pathlib import Path
from esmerald import Esmerald, StaticFilesConfig
static_files_config = StaticFilesConfig(
path="/static", packages=["mypackage"], directory=Path("static")
)
static_files_node_modules_config = StaticFilesConfig(
path="/static/node_modules", directory=Path("node_modules")
)
app = Esmerald(static_files_config=[static_files_node_modules_config, static_files_config])
Примечание
Используется первый совпавший путь, и в настоящее время нет возможности перейти по ссылке в случае, если файл не найден, поэтому порядок очень важен.
Множественные каталоги с переходом¶
Дизайнеры могут захотеть предоставить перезапись статическим файлам или иметь резервные варианты. В предыдущем примере этого не было возможно. Начиная с самой последней версии Lilya (0.11.5+), можно предоставить несколько каталогов lilya и получить такое поведение
from pathlib import Path
from esmerald import Esmerald, StaticFilesConfig
static_files_config = StaticFilesConfig(
path="/static", directory=["static/overwrites", "static", "static/defaults", "node_modules"]
)
app = Esmerald(static_files_config=static_files_config)
Оба способа можно смешивать.