Læsere som dig hjælper med at støtte MUO. Når du foretager et køb ved hjælp af links på vores websted, kan vi optjene en affiliate-kommission. Læs mere.

En af de mest kraftfulde funktioner i Django er dens evne til at genbruge kode dynamisk. Skabelonarv tillader deling af kode mellem overordnede og underordnede skabeloner. Det reducerer i høj grad dobbeltarbejde.

Django har sit skabelonsprog designet til at blande sig med HTML. Du vil finde det nemt at arbejde med Djangos skabeloner, hvis du har arbejdet med HTML-kode før. Andre tekstbaserede skabelonsprog som Smarty eller Jinja2 har lignende syntaks.

Lad os lære mere om skabelonarv ved at bygge et Django-projekt.

Hvad er en Django-skabelon?

I Django er en skabelon en tekstfil, der kan generere ethvert tekstbaseret format, såsom HTML, XML eller CSV.

Django skabelon tags styre logikken, der omslutter variabler og værdier i skabelonen. Mærkerne hjælper med at adskille programlogik fra skabelonpræsentation. De hjælper også med at holde dine skabeloner rene og organiserede.

instagram viewer

Django har mange indbyggede tags, som ligner {% tag %}. Tags er nyttige på mange måder. De kan oprette tekst i outputtet, udføre loops og indlæse information i skabelonen.

Du vil bruge tags i dette projekt til at demonstrere skabelonarv.

Opret et Django-projekt

For at komme i gang, oprette et Django-projekt. Opret en app med navnet skabeloner. Når du har gjort det, er du klar til at oprette en visningsfunktion til appen, en URL-sti og skabeloner for at demonstrere skabelonarv.

Opret en visningsfunktion

Først skal du oprette en udsigt funktion, der gengiver skabelonerne. I dette tilfælde vil du gengive index.html skabelon. Importer gengive metode fra Django-genveje. Opret derefter en visningsfunktion ved navn indeks, der returnerer og gengiver indeksskabelonen.

fra django.genveje importere gengive
# Opret dine synspunkter her.
defindeks(anmodning):
returnere gengivelse (anmodning,'index.html')

Opret en URL-sti

Opret derefter en URL-sti for visningsfunktionen til at vise skabelonerne. Importer sti funktion fra django.urls og udsigt funktion fra views.py fil. Importer derefter indstillinger og statisk at gengive alle billeder og medier, du måtte have i skabelonerne.

fra django.urls importere sti
fra. importere visninger
fra django.conf importere indstillinger
fra django.conf.urls.static importerestatisk
urlpatterns=[
sti('',views.index, name='indeks'),
]
hvisindstillinger.FEJLFINDE:
urlpatterns+=statisk(indstillinger. MEDIA_URL, document_root=indstillinger. MEDIA_ROOT)

Opret skabeloner

Nu hvor du har udsigt og URL sti, opret skabelonerne. For at demonstrere skabelonarvning skal du oprette en base.html som forældreskabelon. Det base.html filen vil have generelle elementer, du ønsker at dele med index.html, barneskabelonen.

{% load bootstrap5 %}
{% belastning statisk %}
<!DOCTYPE html>
<html lang="da">
<hoved>
<meta tegnsæt="UTF-8">
<meta http-equiv="X-UA-kompatibel" indhold="IE=kant">
<metanavn="viewport" indhold="bredde=enhedsbredde, indledende skala=1,0">
<!-- titler -->
{% if title %}
<titel> Nedarvede skabeloner {{title}}</title>
{% andet %}
<titel> Nedarvede skabeloner </title>
{% Afslut Hvis %}
{% blok stilarter %}
{% bootstrap_css %}
<link rel="stilark" href="{% statisk 'css/style.css' %}">
{% slutblok %}
</head>
<legeme>
{% inkluderer 'navbar.html' %}
{% block content %} {% endblock %}
<!-- Bootstrap links -->
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integritet ="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM" krydsoprindelse="anonym"></script>
</body>
</html>

Først skal du indlæse Bootstrap og statiske afhængigheder på base.html skabelon. Du kan brug Bootstrap-rammen med dit Django-projekt at style HTML-siderne. Den statiske afhængighed indlæst øverst vil indlæse aktiver inkluderet i den statiske mappe.

Django-skabeloner giver dig mulighed for at videregive logik, der er ansvarlig for at vise indhold. Skabelontags består af tekst omgivet af "{%" og "%}" tegn. Det hvis ellers erklæring kontrollerer for forhold i visningsfunktionen. Hvis betingelsen er sand, gengiver den indholdet i den første blok; hvis falsk, vil det gengive indholdet i den anden.

Det base.html fil vil også gengive indholdet af navbar.html lige der, hvor du placerer skabelontaggene. Det betyder, når du forlænger base.html, navbar.html er også nedarvet. Enhver skabelon, der udvider base.html vil arve ethvert element med en {% inkluderer %} tag.

Enhver tekst omgivet af {{}} er en skabelonvariabel. Skabelonvariabler er dynamiske data leveret af visningsfunktioner. Django bruger også blok-tags, der bruger et åbent tag, som f.eks {% bloker indhold %}, og et afsluttende tag, som {% slutblok %}.

Bloktags giver de underordnede skabeloner mulighed for at tilsidesætte indholdet af de overordnede skabeloner. I dette tilfælde index.html kan erstatte dets indhold i området omgivet af blokmærker. Det vil ikke forstyrre den anden base.html komponenter.

Lad os anvende logikken på index.html

{% udvides 'base.html' %}
{% bloker indhold %}
<div klasse="container tekst-center" stil="farve: hvid">
<h1>Jeg er indeksskabelonen</h1>
<s>Jeg har arvet Bootstrap og navbaren fra base.html</s>
</div>
{% slutblok %}

I den index.html skabelon, brug {% forlænge %} tag til at udvide komponenter i base.html. Inde i blokmærkerne {% bloker indhold %}, skriv al din kode.

I den index.html skabelon, har du et H1 og et afsnitselement. Du kan bruge skabelontags inde i div'erne til at kalde variabler fra udsigt fungere.

Test skabelonarv i browseren

Du kan nu køre serveren. Når du har gjort det, skal du tjekke i browseren for at se, om index.html fil arvet elementerne af base.html. Det inkluderer Bootstrap-links og navbar.html skabelon.

Det index.html filen skal arve navbar- og Bootstrap-stilene fra basisskabelonen. Hvis ja, har du brugt skabelonarv korrekt. Uden det ville du have været nødt til at tilføje navigationslinjen og Bootstrap-links, hvor du havde brug for dem.

Også eventuelle ændringer, du foretager i base.html vil afspejle på tværs af alle de skabeloner, det strækker sig til. Dette princip er vigtigt ved fejlhåndtering. Du kan nemt identificere skabeloner med fejl.

Skabelonarv er en af ​​de mange måder, hvorpå Django implementerer Don't Repeat Yourself (DRY) princippet. Det vil gøre din udvikling meget nemmere og enklere.

Hvorfor du skal bruge Django skabelonarv

Djangos skabelonarv er en af ​​dens mest komplekse funktioner. Det kan tage lidt tid at forstå det, men når du først gør det, sparer det en masse udviklingsindsats.

Skabelonarv giver dig mulighed for at dele kode mellem overordnede og underordnede skabeloner. Dette sikrer, at du ikke skriver gentagende kode i dine skabeloner.

Skabelonarv er vigtig i store Django-projekter. I sådanne tilfælde er der mange applikationer og mange skabeloner at designe. De overordnede skabeloner giver dig masser af kontrol over applikationens øvrige komponenter.

Ved at lære Django skabelonsystemet kan du nyde at skrive ren og kraftfuld kode.