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

TemplateConfig

TemplateConfig — это простой набор конфигураций, который при передаче активирует движок шаблонов.

Info

В настоящее время Esmerald поддерживает Jinja2 и Mako.

Важно понимать, что вам не обязательно использовать предоставляемые Esmerald JinjaTemplateEngine или MakoTemplateEngine в рамках TemplateConfig.

Вы вольны создать свой собственный движок шаблонов и передать его в TemplateConfig. Таким образом, вы можете разрабатывать по своему усмотрению.

Tip

Esmerald, построенный на основе Lilya и использует JinjaTemplateEngine из Lilya. Вы можете ознакомиться с Jinja2Template в документации Lilya, чтобы понять параметры и их использование.

Вы также можете создать свой собственный движок jinja2 и передать его в параметре engine конфигурации TemplateConfig.

Вы заметите, что имена параметров в TemplateConfig совпадают с большинством реализаций jinja2.

Warning

Движок Mako имеет ограниченную интеграцию в Esmerald. В будущем это изменится.

TemplateConfig и приложение

Для использования TemplateConfig в экземпляре приложения.

from pathlib import Path

from esmerald import Esmerald
from esmerald.config.template import TemplateConfig
from esmerald.template.jinja import JinjaTemplateEngine

template_config = TemplateConfig(
    directory=Path("templates"),
    engine=JinjaTemplateEngine,
)

app = Esmerald(template_config=template_config)

Другой пример

from pathlib import Path

from esmerald import Esmerald
from esmerald.config.template import TemplateConfig
from esmerald.template.mako import MakoTemplateEngine

template_config = TemplateConfig(
    directory=Path("templates"),
    engine=MakoTemplateEngine,
)

app = Esmerald(template_config=template_config)

Параметры

Все параметры и значения по умолчанию доступны в справочнике TemplateConfig.

TemplateConfig и настройки приложения

TemplateConfig можно настроить напрямую через создание экземпляра приложения, а также через настройки.

from pathlib import Path

from esmerald import EsmeraldAPISettings
from esmerald.config.template import TemplateConfig
from esmerald.template.jinja import JinjaTemplateEngine


class CustomSettings(EsmeraldAPISettings):
    @property
    def template_config(self) -> TemplateConfig:
        """
        Initial Default configuration for the StaticFilesConfig.
        This can be overwritten in another setting or simply override
        `template_config` or then override the `def template_config()`
        property to change the behavior of the whole template_config.

        Esmerald can also support other engines like mako, Diazo,
        Cheetah. Currently natively only supports jinja2 and mako as they
        are standards in the market.
        """
        return TemplateConfig(
            directory=Path("templates"),
            engine=JinjaTemplateEngine,
        )

Это позволит вам поддерживать чистоту настроек и их разделение. Так же избегать перегруженного экземпляра Esmerald.

url_for

Esmerald автоматически предоставляет url_for при использовании системы шаблонов jinja, это означает, что вы можете делать что-то вроде этого:

<link href="{{ url_for('static', path='/css/app.min.css') }}" rel="stylesheet" />

Как использовать

Просто верните Template (из esmerald), а не TemplateResponse, с параметром name, указывающим на относительный путь к шаблону. Вы можете передать дополнительные данные, передав параметр context в словарь, содержащий дополнительные данные.

Чтобы выбрать тип возвращаемого значения (txt, html), вам нужно называть файлы так: foo.html.jinja.