ΠŸΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΡŽ

TemplateConfig

TemplateConfig β€” это простой Π½Π°Π±ΠΎΡ€ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€ΡƒΠ΅Ρ‚ Π΄Π²ΠΈΠΆΠΎΠΊ шаблонов.

Info

Π’ настоящСС врСмя Ravyn ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Jinja2.

Π’Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ прСдоставляСмыС Ravyn JinjaTemplateEngine Π² Ρ€Π°ΠΌΠΊΠ°Ρ… TemplateConfig.

Π’Ρ‹ Π²ΠΎΠ»ΡŒΠ½Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ свой собствСнный Π΄Π²ΠΈΠΆΠΎΠΊ шаблонов ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π² TemplateConfig. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΠΎ своСму ΡƒΡΠΌΠΎΡ‚Ρ€Π΅Π½ΠΈΡŽ.

Tip

Ravyn, построСнный Π½Π° основС Lilya ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ JinjaTemplateEngine ΠΈΠ· Lilya. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с Jinja2Template Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Lilya, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΈ ΠΈΡ… использованиС.

Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ свой собствСнный Π΄Π²ΠΈΠΆΠΎΠΊ jinja2 ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π΅ engine ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ TemplateConfig.

Π’Ρ‹ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π² TemplateConfig ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‚ с Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎΠΌ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ jinja2.

TemplateConfig ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅

Для использования TemplateConfig Π² экзСмплярС прилоТСния.

from pathlib import Path

from ravyn import Ravyn
from ravyn.core.config.template import TemplateConfig
from ravyn.template.jinja import JinjaTemplateEngine

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

app = Ravyn(template_config=template_config)

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹

ВсС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΈ значСния ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ доступны Π² справочникС TemplateConfig.

TemplateConfig ΠΈ настройки прилоТСния

TemplateConfig ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Ρ‡Π΅Ρ€Π΅Π· созданиС экзСмпляра прилоТСния, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ‡Π΅Ρ€Π΅Π· настройки.

from pathlib import Path

from ravyn import RavynSettings
from ravyn.core.config.template import TemplateConfig
from ravyn.template.jinja import JinjaTemplateEngine


class CustomSettings(RavynSettings):
    @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.

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

Π­Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π²Π°ΠΌ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ чистоту настроСк ΠΈ ΠΈΡ… Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅. Π’Π°ΠΊ ΠΆΠ΅ ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ экзСмпляра Ravyn.

url_for

Ravyn автоматичСски прСдоставляСт url_for ΠΏΡ€ΠΈ использовании систСмы шаблонов jinja, это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅ этого:

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

Как ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ

ΠŸΡ€ΠΎΡΡ‚ΠΎ Π²Π΅Ρ€Π½ΠΈΡ‚Π΅ Template (ΠΈΠ· ravyn), Π° Π½Π΅ TemplateResponse, с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ name, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΌ Π½Π° ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ ΠΊ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅, ΠΏΠ΅Ρ€Π΅Π΄Π°Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ context Π² ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ, содСрТащий Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅.

Π§Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ³ΠΎ значСния (txt, html), Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ Ρ‚Π°ΠΊ: foo.html.jinja.