Перейти к содержанию

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)

Оба способа можно смешивать.