Јиња шаблони нуде моћан језик који можете користити за креирање динамичких веб страница са лакоћом.

Интеграција Јиња са ФастАПИ омогућава вам да креирате динамичке веб странице које неприметно спајају Питхон код са ХТМЛ-ом, омогућавајући вам да одвојите слој презентације ваше апликације од логике слој. Са динамичким веб страницама можете да генеришете персонализовани садржај вођен подацима, побољшавајући корисничко искуство.

Шта је Јиња?

Јиња је робустан механизам за шаблоне богат функцијама за Питхон који генерише динамичке веб странице. Јиња Темплатинг подржава наслеђивање, условне изјаве, петље и различите функције које поједностављују креирање динамичких веб страница.

Можете комбиновати ФастАПИ и Јиња да бисте креирали веб странице са доследним изгледом који може да приказује податке у реалном времену и управља уносом корисника. Такође можете постићи одвајање од забринутости, чинећи ваш код лакшим за одржавање и лакшим за разумевање.

Подесите ФастАПИ пројекат

Да бисте започели, мораћете да подесите ФастАПИ пројекат.

  1. Креирајте и активирајте виртуелно окружење користећи ове терминалске команде:
    питхон -м венв енв

    # На Уник/МацОС-у:
    извор венв/бин/активирај

    # На Виндовс-у:
    .\венв\Сцриптс\ацтивате

  2. Инсталирајте ФастАПИ и потребне зависности.
    пип инсталл "фастапи[алл]"
  3. Направите директоријум пројекта мој блог.
  4. Направите Питхон датотеку маин.пи у директоријуму вашег пројекта.
  5. Додајте следећи код у маин.пи фајл:
    из фастапи увоз ФастАПИ

    факе_постс_дб = [{
    'титле': 'Први блог пост',
    'садржај': „Садржај првог поста на блогу.“,
    'аутор': 'Н.Н. лице',
    'Датум објављивања': '2023-06-20',
    'коментари': [
    {'аутор': 'Алице', 'садржај': 'Одличан пост!'},
    {'аутор': 'Боб', 'садржај': 'Занимљиво читање.'}
    ],
    'статус': 'објављено'
    },{
    'титле': 'Други пост на блогу',
    'садржај': „Садржај другог поста на блогу.“,
    'аутор': 'Јане Смитх',
    'Датум објављивања': Ниједан,
    'коментари': [],
    'статус': 'нацрт'
    }]

    апликација = ФастАПИ()

    @апп.гет("/о")
    дефО томе():
    повратак„Све што треба да знате о Симпле Блогу“

    Горњи код креира једноставну ФастАПИ апликацију са једном крајњом тачком која враћа ЈСОН одговор када се приступа преко одговарајуће УРЛ адресе. Можете користите Питхон речник овако уместо стварне базе података; помаже у смањењу сложености док се фокусира на примарни циљ.
  6. Покрените сервер.
    увицорн маин: апп --релоад

Посетите http://localhost: 8000/око у вашем претраживачу да видите одговор сервера.

Интеграција Јиња шаблона

Након што сте успешно поставили свој пројекат, сада му можете додати Јиња шаблон.

  1. У маин.пи датотеку, увезите следеће модуле:
    из фастапи.темплатинг увоз Јиња2Темплатес
    из фастапи.статицфилес увоз СтатицФилес
  2. Испод апликација променљиве, креирајте инстанцу Јиња2Темплатес класе и проследите директоријум који ће садржати ваше шаблоне.
    шаблони = Јиња2Темплатес (директоријум="шаблони")
  3. После шаблони променљиве, додајте следећу линију кода:
    апп.моунт("/статиц", СтатицФилес (директориј="статичан"), име="статичан")
    Код изнад монтира статична директоријум и налаже ФастАПИ да опслужује све статичке датотеке које се налазе у директоријуму када УРЛ захтева почиње са /static.
  4. У мој блог директоријум креира два директоријума, шаблони за држање ХТМЛ датотека и статична који ће садржати све статичке датотеке.

Када сте завршили ове кораке, успешно сте интегрисали Јиња Темплатинг са својим пројектом.

Креирање динамичке веб странице са Јиња

Јиња пружа богат скуп синтаксе и функција за креирање динамичких шаблона.

У овом одељку ћете видети како да користите синтаксу Јиња шаблона за креирање динамичких веб страница.

Приложите ознаке шаблона са а витичаста заграда и симбол процента на обе стране. Можете користити такве ознаке за обављање тока контроле и логичких операција у шаблону. Неке најчешће коришћене ознаке шаблона укључују:

  • Стање: Покреће блок кода ако је услов тачан.
    {% ако услов %}...{% ендиф %}
  • Лооп: Итерира преко итерабле и покреће блок кода за сваку ставку.
    {% за предмет ин итерабле %}...{% ендфор %}
  • Укључи: Укључује још један шаблон у оквиру тренутног шаблона.
    {% укључује 'темплате_наме.хтмл' %}
  • Блокирати: Дефинише блок који подређени шаблони могу заменити коришћењем наслеђивања.
    {% блоцк блоцк_наме %}...{% ендблоцк %}
  • Проширити: Омогућава подређеном шаблону да наследи и прошири родитељски шаблон.
    {% ектенд парент_темп.хтмл %}

Ове ознаке пружају флексибилан и изражајан начин за генерисање ХТМЛ садржаја заснованог на динамичким подацима и контролу логике ваше апликације.

Наслеђивање шаблона

Јиња Темплатеинг подржава наслеђивање шаблона. Ово вам омогућава да дефинишете основни (родитељски) шаблон са заједничким распоредом и одељцима које подређени шаблон може проширити или заменити. Подређени шаблон може да користи Проширити ознаку за наслеђивање и проширење родитељског шаблона.

Створити басе.хтмл фајл у шаблони директоријум са следећим кодом.

хтмл>
<хтмл>
<глава>
<наслов>{% блоцк титле %}Једноставан блог{% ендблоцк %}наслов>
глава>
<тело>
<х1>{% блоцк хеадинг %}Једноставан блог{% ендблоцк %}х1>

{% блок садржаја %}
{% ендблоцк %}

{% укључује "фоотер.хтмл" %}
тело>
хтмл>

На овај начин имате родитељски шаблон који садржи заједнички код за све ваше шаблоне, омогућавајући подређеном шаблону да га наследи и прошири по потреби.

У шаблони креирање директоријума а фоотер.хтмл датотеку са следећим кодом.

<фоотер>
<стр>© Једноставан блог 2023. Сва права задржана.стр>
<ахреф="{{ урл_фор('абоут') }}">О томеа>
фоотер>

фоотер.хтмл је укључени шаблон који садржи ХТМЛ код за одељак подножја. Можете га поново користити на више страница тако што ћете га укључити у основни шаблон користећи Укључи таг.

У шаблони креирање директоријума а блог.хтмл датотеку са следећим кодом.

{% проширује "басе.хтмл" %}

{% блоцк титле %}Једноставан блог – страница блога{% ендблоцк %}

{% блоцк хеадинг %}Једноставан блог – страница блога{% ендблоцк %}

{% блок садржаја %}
<х2>Укупан број постова: {{ постова|дужина }}х2>

{% за пост у постовима %}
<дивкласа="пошта">

{% иф пост.статус == 'објављено' %}
<х3>{{ Наслов поста }}х3>
<стр>{{ пост.цонтент|скрати }}стр>
<стр>Објављено: {{ пост.публицатион_дате }}стр>

<х4>Коментари:х4>
<ул>
{% за коментар у пост.цомментс %}
<ликласа="коментар">{{ цоммент.аутхор }}-: {{ цоммент.цонтент }}ли>

{% ендфор %}
ул>
{% елсе %}
<стр>Овај пост је још увек у режиму нацрта.стр>
{% ендиф %}
див>
<хр>
{% ендфор %}
{% ендблоцк %}

Овај подређени шаблон наслеђује од басе.хтмл помоћу Проширити таг. Он замењује одређене блокове дефинисане у основном шаблону да би обезбедио прилагођени садржај за страницу блога. Такође укључује неопходну логику и понављање за приказивање поста и повезаних коментара.

Изрази

Јиња подржава широк спектар израза, укључујући аритметичке операције, поређења и логичке операције. На пример:

{{2 + 2}} // излаз: 4

Замена променљиве

Да бисте избацили променљиве у шаблону, ставите их у двоструке витичасте заграде. На пример:

{{пост.титле}} // излаз: 'Први блог пост'

Филтери

Филтери мењају излаз променљиве. Можете додати једну после променљиве помоћу симбола цеви (|). На пример:

{{пост|ленгтх}} // излаз: 2

Можете додати уметнуте коментаре и вишелинијске коментаре у своје шаблоне. Јиња ће игнорисати ове коментаре током рендеровања шаблона, тако да су корисни за додавање објашњења у шаблон.

{# #} // у реду

{% коментар %}... {% енд цоммент %} // вишелинијски

УРЛ адресе

Да би вам омогућио да генеришете исправне хипервезе до других страница унутар апликације, контекст шаблона Јиња укључује а урл_фор функција. На пример:

<ахреф="{{ урл_фор('абоут') }}">О томеа>

Код изнад постаје http://localhost: 8000/око. Такође ћете видети како да користите урл_фор функцију да бисте касније добили статичке путање датотека.

Ово су само неки од основних аспеката Јиња Темплатеинг синтаксе. Јиња Темплатеинг пружа много више функција и функционалности, као што су макрои, контекст шаблона и још много тога, како би креирање и прилагођавање шаблона било ефикасно и флексибилно.

Преношење података у шаблоне

Сада када имате спремне шаблоне, потребно је да проследите податке са крајњих тачака ФастАПИ у шаблоне за рендеровање.

Додајте следећи код у маин.пи фајл:

из фастапи увоз ФастАПИ, Захтев
из фастапи.респонсес увоз ХТМЛРеспонсе

@апп.гет("/", респонсе_цласс=ХТМЛРеспонсе)
асинцдефреад_постс(захтев: Захтев):
повратак шаблони. ТемплатеРеспонсе("блог.хтмл", {"захтев": захтев,
"постови": факе_постс_дб})

Код дефинише крајњу тачку ФастАПИ која обрађује ГЕТ захтев до основног УРЛ-а („/“) и враћа ХТМЛРеспонсе генерисан из блог.хтмл шаблон. Он прослеђује контекстни речник који садржи тренутни објекат захтева и факе_постс_дб, у шаблон. На овај начин Јиња може да прикаже тачне и динамичне податке.

Посетите http://localhost: 8000/ у вашем претраживачу и требало би да видите нешто овако:

Успешно сте пренели податке у шаблоне за приказивање.

Послуживање статичких датотека

Поред приказивања динамичких шаблона, ФастАПИ такође пружа функционалност за послуживање статичких датотека као што су ЦСС датотеке, ЈаваСцрипт датотеке и слике.

Користићете ЦСС да побољшате изглед и осећај странице.

У статична директоријум, креирајте а стилес.цсс датотеку са следећим кодом.

тело {
породица фонтова: Ариал, Санс Сериф;
маргина: 0;
паддинг: 20пк;
боја позадине: #ф5ф5ф5;
}

х1, х2, х3, х4 {
боја: #333;
}

.пошта {
боја позадине: #ффф;
паддинг: 20пк;
маргина-дно: 20пк;
граница-радијус: 5пк;
кутија-сенка: 0 2пк 4пкргба(0, 0, 0, 0.1);
}

.поштах3 {
маргин-топ: 0;
}

.поштастр {
маргина-дно: 10пк;
}

.поштаул {
листа-стил-тип: ниједан;
паддинг-лево: 0;
}

.цоммент {
маргина-дно: 10пк;
паддинг: 10пк;
боја позадине: #ф9ф9ф9;
граница-радијус: 5пк;
}

фоотер {
боја позадине: #ф2ф2ф2;
паддинг: 10пк;
Поравнање текста: центар;
}

Модифи тхе глава елемент оф тхе басе.хтмл шаблон на следећи начин:

<глава>
<наслов>{% блоцк титле %}Једноставан блог{% ендблоцк %}наслов>
<линкхреф=„{{ урл_фор('статиц', патх='/стилес.цсс') }}"рел="стилесхеет">
глава>

Функција урл_фор() генерише УРЛ (путњу) за стилес.цсс (/статиц/стилес.цсс) датотеку у статична директоријум који се затим аутоматски опслужује од стране ФастАПИ.

Посетите http://localhost: 8000/ на вашем претраживачу.

Исти поступци важе за послуживање слика и ЈаваСцрипт датотека.

Не заборавите да следите најбоље праксе

Када радите са Јиња Темплатинг у ФастАПИ-ју, важно је пратити одређене најбоље праксе како бисте осигурали добро организовану и ефикасну базу кода.

  • Организујте шаблоне у наменски директоријум и размислите о коришћењу поддиректоријума за повезане шаблоне.
  • Користите наслеђивање шаблона да бисте креирали основне шаблоне за вишекратну употребу и проширили их за одређени садржај.
  • Пажљиво изаберите податке које ћете проследити шаблонима, одржавајући оптерећење лаганим, и користите контекстуалне процесоре или међуверски софтвер за најчешће коришћене податке.
  • Искористите функције Јиња Темплатинга као што су макрои, филтери и контролне структуре за побољшану поновну употребу и читљивост кода.
  • Оптимизујте перформансе применом стратегија кеширања за статичке шаблоне, коришћењем ХТТП заглавља за кеширање и профилисањем за уска грла у перформансама.

Пратећи ове најбоље праксе, можете одржавати структурирани пројекат, оптимизовати перформансе рендеровања и ефикасно искористити функције Јиња Темплатинга у вашим ФастАПИ апликацијама.

Коришћење ФастАПИ-ја за прављење РестАПИ-ја

Осим изградње апликација које захтевају шаблоне за рендеровање. ФастАПИ се истиче у изградњи РестАПИ-ја због својих високих перформанси, синтаксе једноставне за коришћење, аутоматског генерисања документације и скалабилности. Ове карактеристике чине ФастАПИ идеалним за ефикасан развој робусних веб АПИ-ја.