Jinja veidnes piedāvā jaudīgu valodu, ko varat izmantot, lai viegli izveidotu dinamiskas tīmekļa lapas.

Jinja integrēšana ar FastAPI ļauj izveidot dinamiskas tīmekļa lapas, kas nemanāmi apvieno Python kodu ar HTML, ļaujot atdalīt lietojumprogrammas prezentācijas slāni no loģikas slānis. Izmantojot dinamiskās tīmekļa lapas, varat ģenerēt personalizētu un uz datiem balstītu saturu, uzlabojot lietotāju pieredzi.

Kas ir Jinja?

Jinja ir spēcīgs, ar funkcijām bagāts Python veidņu dzinējs, kas ģenerē dinamiskas tīmekļa lapas. Jinja Templating atbalsta mantošanu, nosacījumu paziņojumus, cilpas un dažādas funkcijas, kas vienkāršo dinamisku tīmekļa lapu izveidi.

Varat apvienot FastAPI un Jinja, lai izveidotu tīmekļa lapas ar konsekventu izkārtojumu, kas var parādīt reāllaika datus un apstrādāt lietotāja ievadi. Jūs varat arī sasniegt rūpju nošķiršana, padarot jūsu kodu vieglāk uzturējamu un saprotamāku.

Iestatiet FastAPI projektu

Lai sāktu, jums būs jāiestata FastAPI projekts.

  1. Izveidojiet un aktivizējiet virtuālo vidi
    instagram viewer
    izmantojot šīs termināļa komandas:
    python -m venv env

    # Operētājsistēmā Unix/MacOS:
    avots venv/bin/activate

    # Operētājsistēmā Windows:
    .\venv\Scripts\activate

  2. Instalējiet FastAPI un nepieciešamās atkarības.
    pip instalēt "fastapi[visi]"
  3. Izveidojiet projekta direktoriju mans_emuārs.
  4. Izveidojiet Python failu galvenais.py jūsu projektu direktorijā.
  5. Pievienojiet tālāk norādīto kodu galvenais.py fails:
    no fastapi imports FastAPI

    fake_posts_db = [{
    'nosaukums': "Pirmais emuāra ieraksts",
    'saturs': "Pirmā emuāra ieraksta saturs.",
    'autors': "Džons Dū",
    'publication_date': '2023-06-20',
    'komentāri': [
    {'autors': 'Alise', 'saturs': "Lielisks ieraksts!"},
    {'autors': "Bobs", 'saturs': 'Interesanti lasāmviela.'}
    ],
    'statuss': 'publicēts'
    },{
    'nosaukums': "Otrais emuāra ieraksts",
    'saturs': "Otrā emuāra ieraksta saturs.",
    'autors': "Džeina Smita",
    'publication_date': Nav,
    'komentāri': [],
    'statuss': 'melnraksts'
    }]

    lietotne = FastAPI()

    @app.get("/about")
    defpar():
    atgriezties"Viss, kas jums jāzina par vienkāršu emuāru"

    Iepriekš minētais kods izveido vienkāršu FastAPI lietojumprogrammu ar vienu galapunktu, kas atgriež JSON atbildi, kad tai piekļūst, izmantojot atbilstošo URL. Jūs varat izmantojiet Python vārdnīcu kā šis faktiskās datu bāzes vietā; tas palīdz samazināt sarežģītību, vienlaikus koncentrējoties uz primāro mērķi.
  6. Palaidiet serveri.
    uvicorn galvenais: app --reload

Apmeklējums http://localhost: 8000/apmēram pārlūkprogrammā, lai redzētu servera atbildi.

Jinja veidņu integrēšana

Kad projekts ir veiksmīgi iestatīts, tagad varat tam pievienot Jinja veidni.

  1. Iekš galvenais.py failu, importējiet šādus moduļus:
    no fastapi.template imports Jinja2Veidnes
    no fastapi.staticfiles imports StaticFiles
  2. Zemāk par lietotne mainīgo, izveidojiet instanci Jinja2Veidnes klasē un nododiet direktoriju, kurā būs jūsu veidnes.
    veidnes = Jinja2Templates (direktorijs="veidnes")
  3. Pēc tam, kad veidnes mainīgo, pievienojiet šādu koda rindu:
    app.mount("/static", StaticFiles (direktorijs="statisks"), nosaukums="statisks")
    Iepriekš minētais kods piestiprina statisks direktorijā un uzdod FastAPI apkalpot visus statiskos failus, kas atrodas direktorijā, kad pieprasījuma URL sākas ar /static.
  4. In mans_emuārs direktorijā izveidot divus direktorijus, veidnes lai turētu HTML failus un statisks kurā būs visi statiskie faili.

Pabeidzot šīs darbības, jūs esat veiksmīgi integrējis Jinja Templating savā projektā.

Dinamiskas tīmekļa lapas izveide ar Jinja

Jinja nodrošina bagātīgu sintakses un funkciju kopumu, lai izveidotu dinamiskas veidnes.

Šajā sadaļā redzēsit, kā izmantot Jinja veidņu sintaksi, lai izveidotu dinamiskas tīmekļa lapas.

Iekļaujiet veidņu tagus ar a cirtaini bikšturi un procentu simbols uz abām pusēm. Varat izmantot šādus tagus, lai veidnē veiktu kontroles plūsmas un loģikas darbības. Daži bieži izmantotie veidņu tagi ir šādi:

  • Stāvoklis: palaiž koda bloku, ja nosacījums ir patiess.
    {% ja nosacījums %}...{% endif %}
  • Cilpa: atkārto iterējamo un palaiž katra vienuma koda bloku.
    {% priekš lieta iekšā atkārtojams %}...{% endfor %}
  • Iekļaut: pašreizējā veidnē iekļauj citu veidni.
    {% ietver 'veidnes_nosaukums.html' %}
  • Bloķēt: definē bloku, ko pakārtotās veidnes var ignorēt, izmantojot mantošanu.
    {% block_name %}...{% endblock %}
  • Pagarināt: ļauj pakārtotajai veidnei mantot un paplašināt vecākveidni.
    {% extend parent_temp.html %}

Šie tagi nodrošina elastīgu un izteiksmīgu veidu, kā ģenerēt HTML saturu, pamatojoties uz dinamiskiem datiem, un kontrolēt jūsu lietojumprogrammas loģiku.

Veidnes mantošana

Jinja Templating atbalsta veidņu pārmantošanu. Tas ļauj definēt pamata (vecāku) veidni ar kopīgu izkārtojumu un sadaļām, kuras pakārtotā veidne var paplašināt vai ignorēt. Bērna veidnē var izmantot Pagarināt tagu, lai mantotu un paplašinātu vecākveidni.

Izveidot a base.html failu mapē veidnes direktorijā ar šādu kodu.

html>
<html>
<galvu>
<virsraksts>{% block title %}Vienkāršs emuārs{% endblock %}virsraksts>
galvu>
<ķermeni>
<h1>{% block heading %}Vienkāršs emuārs{% endblock %}h1>

{% bloķēt saturu %}
{% endblock %}

{% include "footer.html" %}
ķermeni>
html>

Tādā veidā jums ir vecāka veidne, kurā ir visu jūsu veidņu kopīgs kods, ļaujot pakārtotajai veidnei to mantot un pēc vajadzības paplašināt.

Iekš veidnes direktoriju izveidot a kājene.html failu ar šādu kodu.

<kājene>
<lpp>© 2023. gada vienkāršs emuārs. Visas tiesības aizsargātas.lpp>
<ahref="{{ url_for('about') }}">Para>
kājene>

kājene.html ir iekļauta veidne, kas satur kājenes sadaļas HTML kodu. Varat to atkārtoti izmantot vairākās lapās, iekļaujot to pamata veidnē, izmantojot Iekļaut tagu.

Iekš veidnes direktoriju izveidot a blog.html failu ar šādu kodu.

{% paplašina "base.html" %}

{% block title %}Vienkāršs emuārs — emuāra lapa{% endblock %}

{% block heading %}Vienkāršs emuārs — emuāra lapa{% endblock %}

{% bloķēt saturu %}
<h2>Kopējais ziņu skaits: {{ posts|length }}h2>

{% ziņas ziņās %}
<divklasē="post">

{% if post.status == 'publicēts' %}
<h3>{{ post.title }}h3>
<lpp>{{ post.content|saīsināt }}lpp>
<lpp>Publicēšanas datums: {{ post.publication_date }}lpp>

<h4>Komentāri:h4>
<ul>
{% komentāram post.comments %}
<liklasē="komentārs">{{ comment.author }}-: {{ comment.content }}li>

{% endfor %}
ul>
{% cits %}
<lpp>Šī ziņa joprojām ir melnraksta režīmā.lpp>
{% endif %}
div>
<st>
{% endfor %}
{% endblock %}

Šī pakārtotā veidne ir mantota no base.html izmantojot Pagarināt tagu. Tas ignorē konkrētus blokus, kas definēti pamata veidnē, lai nodrošinātu pielāgotu saturu emuāra lapai. Tas ietver arī nepieciešamo loģiku un iterāciju ziņas un saistīto komentāru parādīšanai.

Izteicieni

Jinja atbalsta plašu izteiksmju klāstu, tostarp aritmētiskās darbības, salīdzinājumus un loģiskās darbības. Piemēram:

{{2 + 2}} // izvade: 4

Mainīgā aizstāšana

Lai veidnē izvadītu mainīgos, ievietojiet tos dubultās iekavās. Piemēram:

{{post.title}} // izvade: "Pirmais emuāra ieraksts"

Filtri

Filtri modificē mainīgā izvadi. Varat pievienot vienu aiz mainīgā, izmantojot caurules simbolu (|). Piemēram:

{{post|garums}} // izvade: 2

Veidnēs varat pievienot iekļautus komentārus un vairāku rindiņu komentārus. Jinja ignorēs šos komentārus veidnes renderēšanas laikā, tāpēc tie ir noderīgi, lai veidnei pievienotu paskaidrojumus.

{# #} // rindā

{% komentārs %}... {% beigu komentārs %} // daudzrindu

URL

Lai ļautu ģenerēt pareizas hipersaites uz citām lietojumprogrammas lapām, Jinja veidnes kontekstā ir iekļautas a url_for funkciju. Piemēram:

<ahref="{{ url_for('about') }}">Para>

Iepriekš minētais kods kļūst http://localhost: 8000/apmēram. Jūs arī redzēsit, kā lietot url_for funkcija, lai vēlāk iegūtu statiskus failu ceļus.

Šie ir tikai daži no Jinja Templating sintakses pamataspektiem. Jinja Templating nodrošina daudz vairāk līdzekļu un funkcionalitātes, piemēram, makro, veidņu kontekstu un citas, lai padarītu veidņu izveidi un pielāgošanu efektīvu un elastīgu.

Datu nodošana veidnēm

Tagad, kad veidnes ir gatavas, dati no FastAPI galapunktiem ir jānosūta veidnēs renderēšanai.

Pievienojiet tālāk norādīto kodu galvenais.py fails:

no fastapi imports FastAPI, pieprasījums
no fastapi.atbildes imports HTMLResponse

@app.get("/", response_class=HTMLResponse)
asinhronsdeflasīt_ziņas(pieprasījums: pieprasījums):
atgriezties veidnes. TemplateResponse("emuārs.html", {"pieprasījums": pieprasījums,
"ziņas": fake_posts_db})

Kods definē FastAPI galapunktu, kas apstrādā GET pieprasījumu saknes URL ("/") un atgriež HTMLResponse radīts no blog.html veidne. Tas iziet konteksta vārdnīcu, kas satur pašreizējo pieprasījuma objekts un fake_posts_db, veidnē. Tādā veidā Jinja var renderēt precīzus un dinamiskus datus.

Apmeklējums http://localhost: 8000/ pārlūkprogrammā, un jums vajadzētu redzēt kaut ko līdzīgu šim:

Jūs esat veiksmīgi nosūtījis datus renderēšanas veidnēs.

Statisko failu apkalpošana

Papildus dinamisko veidņu renderēšanai FastAPI nodrošina arī funkcionalitāti statisku failu, piemēram, CSS failu, JavaScript failu un attēlu, apkalpošanai.

Jūs izmantosiet CSS, lai uzlabotu lapas izskatu un darbību.

Iekš statisks direktorijā, izveidojiet a stili.css failu ar šādu kodu.

ķermeni {
fontu ģimene: Arial, sans serif;
starpība: 0;
polsterējums: 20px;
fona krāsa: #f5f5f5;
}

h1, h2, h3, h4 {
krāsa: #333;
}

.post {
fona krāsa: #fff;
polsterējums: 20px;
piemale-apakšā: 20px;
robeža-rādiuss: 5px;
kaste-ēna: 0 2px 4pxrgba(0, 0, 0, 0.1);
}

.posth3 {
margin-top: 0;
}

.postlpp {
piemale-apakšā: 10px;
}

.postul {
saraksta stila veids: neviens;
polsterējums-pa kreisi: 0;
}

.komentēt {
piemale-apakšā: 10px;
polsterējums: 10px;
fona krāsa: #f9f9f9;
robeža-rādiuss: 5px;
}

kājene {
fona krāsa: #f2f2f2;
polsterējums: 10px;
teksta līdzināšana: centrs;
}

Modificēt galvu elements base.html veidni šādi:

<galvu>
<virsraksts>{% block title %}Vienkāršs emuārs{% endblock %}virsraksts>
<saitehref="{{ url_for('static', path='/styles.css') }}"rel="stila lapa">
galvu>

Funkcija url_for() ģenerē URL (ceļu) stili.css (/static/styles.css) failā statisks direktorijā, kuru pēc tam automātiski apkalpo FastAPI.

Apmeklējums http://localhost: 8000/ savā pārlūkprogrammā.

Tās pašas procedūras attiecas uz attēlu un JavaScript failu apkalpošanu.

Atcerieties ievērot labāko praksi

Strādājot ar Jinja Templating programmā FastAPI, ir svarīgi ievērot noteiktu paraugpraksi, lai nodrošinātu labi sakārtotu un efektīvu kodu bāzi.

  • Sakārtojiet veidnes īpašā direktorijā un apsveriet iespēju izmantot apakšdirektorijus saistītajām veidnēm.
  • Izmantojiet veidņu pārmantošanu, lai izveidotu atkārtoti lietojamas bāzes veidnes un paplašinātu tās konkrētam saturam.
  • Uzmanīgi atlasiet datus, ko pārsūtīt uz veidnēm, saglabājot vieglu lietderīgās slodzes svaru, un parasti izmantotajiem datiem izmantojiet konteksta procesorus vai starpprogrammatūru.
  • Izmantojiet Jinja Templating funkcijas, piemēram, makro, filtrus un vadības struktūras, lai uzlabotu koda atkārtotu izmantošanu un lasāmību.
  • Optimizējiet veiktspēju, ieviešot kešatmiņas stratēģijas statiskām veidnēm, izmantojot HTTP kešatmiņas galvenes un profilēšanu veiktspējas vājajām vietām.

Ievērojot šo paraugpraksi, varat uzturēt strukturētu projektu, optimizēt renderēšanas veiktspēju un efektīvi izmantot Jinja Templating funkcijas savās FastAPI lietojumprogrammās.

FastAPI izmantošana RestAPI izveidei

Izņemot lietojumprogrammas, kurām nepieciešamas renderēšanas veidnes. FastAPI izceļas RestAPI veidošanā, pateicoties tā augstajai veiktspējai, viegli lietojamai sintaksei, automātiskai dokumentācijas ģenerēšanai un mērogojamībai. Šīs funkcijas padara FastAPI ideāli piemērotu stabilu tīmekļa API efektīvai izstrādei.