Čitatelji poput vas podržavaju MUO. Kada kupite putem poveznica na našoj stranici, možemo zaraditi partnersku proviziju. Čitaj više.

Jedna od najmoćnijih značajki Djanga je njegova sposobnost dinamičke ponovne upotrebe koda. Nasljeđivanje predložaka omogućuje dijeljenje koda između nadređenih i podređenih predložaka. To uvelike smanjuje dupliranje napora.

Django ima svoj jezik predložaka dizajniran da se stapa s HTML-om. Lako ćete raditi s Djangovim predlošcima ako ste prije radili s HTML kodom. Drugi jezici predložaka temeljeni na tekstu kao što su Smarty ili Jinja2 imaju sličnu sintaksu.

Naučimo više o nasljeđivanju predložaka izgradnjom Django projekta.

Što je Django predložak?

U Djangu, predložak je tekstualna datoteka koja može generirati bilo koji tekstualni format, kao što je HTML, XML ili CSV.

Django predloške oznake kontrolirati logiku koja obuhvaća varijable i vrijednosti u predlošku. Oznake pomažu odvojiti logiku programa od prezentacije predloška. Oni također pomažu da vaši predlošci budu čisti i organizirani.

instagram viewer

Django ima mnogo ugrađenih oznaka koje izgledaju kao {% oznaka %}. Oznake su korisne na mnogo načina. Oni mogu stvoriti tekst u izlazu, izvoditi petlje i učitati podatke u predložak.

U ovom projektu ćete koristiti oznake za demonstraciju nasljeđivanja predložaka.

Stvorite Django projekt

Započeti, stvoriti Django projekt. Izradite aplikaciju pod nazivom šablone. Nakon što to učinite, spremni ste za izradu funkcije prikaza za aplikaciju, URL putanju i predloške za demonstraciju nasljeđivanja predložaka.

Stvorite funkciju prikaza

Najprije stvorite a pogled funkcija koja prikazuje predloške. U ovom slučaju, prikazat ćete index.html šablona. Uvezi prikazati metoda iz Django prečaca. Zatim stvorite funkciju pogleda pod nazivom index koja vraća i prikazuje predložak indeksa.

iz django.prečaci uvoz prikazati
# Kreirajte svoje poglede ovdje.
defindeks(zahtjev):
vratiti render (zahtjev,'index.html')

Stvorite URL put

Zatim stvorite a URL put za funkciju prikaza za prikaz predložaka. Uvezi staza funkcija iz django.urls i pogled funkcija iz pogledi.py datoteka. Zatim uvoz postavke i statički za prikaz svih slika i medija koje možda imate u predlošcima.

iz django.urls uvoz staza
iz. uvoz pogleda
iz django.conf uvoz postavke
iz django.conf.urls.static uvozstatički
url uzorci=[
staza('',views.index, name='indeks'),
]
akopostavke.DEBUG:
url uzorci+=statički(postavke. MEDIA_URL, document_root=postavke. MEDIJ_ROOT)

Stvorite predloške

Sada kada imate pogled i URL put, izradite predloške. Da biste demonstrirali nasljeđivanje predloška, ​​kreirajte a baza.html kao roditeljski predložak. The baza.html datoteka će sadržavati opće elemente s kojima želite dijeliti index.html,predložak dijete.

{% load bootstrap5 %}
{% opterećenje statički %}
<!DOCTYPE html>
<html lang="hr">
<glava>
<meta charset="UTF-8">
<meta http-ekviv="X-UA-kompatibilan" sadržaj="IE=rub">
<meta naziv="prozor za prikaz" sadržaj="širina=širina-uređaja, početna skala=1,0">
<!-- naslovi -->
{% if title %}
<titula> Naslijeđeni predlošci {{title}}</title>
{% drugo %}
<titula> Naslijeđeni predlošci </title>
{% završi ako %}
{% blok stilova %}
{% bootstrap_css %}
<veza rel="stilski list" href="{% statički 'css/style.css' %}">
{% endblock %}
</head>
<tijelo>
{% uključuje 'navbar.html' %}
{% block content %} {% endblock %}
<!-- Bootstrap veze -->
<skripta src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js" cjelovitost="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM" unakrsno podrijetlo="anoniman"></script>
</body>
</html>

Prvo učitajte Bootstrap i statičke ovisnosti na baza.html šablona. Možeš koristite Bootstrap framework sa svojim Django projektom za stiliziranje HTML stranica. Statička ovisnost učitana na vrhu će učitati sredstva uključena u statičku mapu.

Django predlošci vam omogućuju prosljeđivanje bitova logike odgovornih za prikazivanje sadržaja. Oznake predloška sastoje se od teksta okruženog s "{%" i "%}"likovi. The ako/drugo iskaz provjerava uvjete u funkciji prikaza. Ako je uvjet istinit, renderira sadržaj u prvom bloku; ako je false, prikazat će sadržaj u drugom.

The baza.html datoteka također će prikazati sadržaj navbar.html upravo tamo gdje postavljate oznake predložaka. To znači kad god produžite baza.html, navbar.html također se nasljeđuje. Svaki predložak koji proširuje baza.html će naslijediti bilo koji element s an {% uključuje %} označiti.

Svaki tekst okružen {{}} je varijabla predloška. Varijable predloška su dinamički podaci koje pružaju funkcije prikaza. Django također koristi blok oznake koje koriste otvorenu oznaku, kao što je {% blokiraj sadržaj %}, i završnu oznaku, poput {% endblock %}.

Oznake bloka dopuštaju podređenim predlošcima da nadjačaju sadržaj nadređenih predložaka. U ovom slučaju, index.html može zamijeniti svoj sadržaj u području omeđenom blok oznakama. Neće smetati drugome baza.html komponente.

Primijenimo logiku na index.html

{% se proteže 'baza.html' %}
{% blokiraj sadržaj %}
<div klasa="spremnik tekst-centar" stil="boja: bijela">
<h1>Ja sam predložak indeksa</h1>
<str>Naslijedio sam Bootstrap i navigacijsku traku iz base.html</str>
</div>
{% endblock %}

u index.html predložak, koristite {% produži %} oznaka za proširenje komponenti baza.html. Unutar oznaka bloka {% blokiraj sadržaj %}, napišite sav svoj kod.

u index.html predložak, imate H1 i element paragrafa. Možete koristiti oznake predložaka unutar divova za pozivanje varijabli iz pogled funkcija.

Testirajte nasljeđivanje predloška u pregledniku

Sada možete pokrenuti poslužitelj. Nakon što to učinite, provjerite u pregledniku je li index.html datoteka je naslijedila elemente baza.html. To uključuje Bootstrap veze i navbar.html šablona.

The index.html datoteka treba naslijediti stilove navigacijske trake i Bootstrapa iz osnovnog predloška. Ako je tako, ispravno ste upotrijebili nasljeđivanje predloška. Bez toga, morali biste dodati navigacijsku traku i Bootstrap veze tamo gdje su vam bili potrebni.

Također, sve promjene koje napravite na baza.html odrazit će se na sve predloške na koje se proteže. Ovo je načelo važno u rješavanju pogrešaka. Možete lako prepoznati predloške s greškama.

Nasljeđivanje predložaka je jedan od mnogih načina na koji Django implementira princip Ne ponavljaj se (DRY). To će učiniti vaš razvoj puno lakšim i jednostavnijim.

Zašto biste trebali koristiti Django Template Inheritance

Djangovo nasljeđivanje predložaka jedna je od njegovih najsloženijih značajki. Možda će trebati neko vrijeme da to shvatite, ali kada to shvatite, uštedjet ćete mnogo truda u razvoju.

Nasljeđivanje predložaka omogućuje vam dijeljenje koda između nadređenih i podređenih predložaka. To osigurava da ne pišete ponavljajući kod u svojim predlošcima.

Nasljeđivanje predložaka je važno u velikim Django projektima. U takvim slučajevima postoji mnogo aplikacija i mnogo predložaka za dizajn. Nadređeni predlošci daju vam puno kontrole nad ostalim komponentama aplikacije.

Učeći Django sustav predložaka, možete uživati ​​u pisanju čistog i moćnog koda.