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
.