Een van de krachtigste functies van Django is de mogelijkheid om code dynamisch te hergebruiken. Overerving van sjablonen maakt het delen van code tussen bovenliggende en onderliggende sjablonen mogelijk. Het vermindert dubbel werk aanzienlijk.
Django heeft zijn sjabloontaal ontworpen om te combineren met HTML. U zult het gemakkelijk vinden om met de sjablonen van Django te werken als u eerder met HTML-code hebt gewerkt. Andere op tekst gebaseerde sjabloontalen zoals Smarty of Jinja2 hebben een vergelijkbare syntaxis.
Laten we meer leren over sjabloonovererving door een Django-project te bouwen.
Wat is een Django-sjabloon?
In Django is een sjabloon een tekstbestand dat elk op tekst gebaseerd formaat kan genereren, zoals HTML, XML of CSV.
Django-sjabloontags controle over de logica die variabelen en waarden in de sjabloon omsluit. De tags helpen om programmalogica te scheiden van sjabloonpresentatie. Ze helpen ook om uw sjablonen schoon en georganiseerd te houden.
Django heeft veel ingebouwde tags, die eruit zien als {% label %}. Tags zijn op veel manieren nuttig. Ze kunnen tekst in de uitvoer maken, loops uitvoeren en informatie in de sjabloon laden.
U gebruikt tags in dit project om de overerving van sjablonen aan te tonen.
Maak een Django-project
Starten, maak een Django-project aan. Maak een app met de naam Sjablonen. Zodra u dit heeft gedaan, bent u klaar om een weergavefunctie voor de app, een URL-pad en sjablonen te maken om sjabloonovername te demonstreren.
Maak een weergavefunctie
Maak eerst een weergave functie die de sjablonen weergeeft. In dit geval geef je de index.html sjabloon. Importeer de veroorzaken methode van Django-snelkoppelingen. Maak vervolgens een weergavefunctie met de naam index die de indexsjabloon retourneert en weergeeft.
van django.snelkoppelingen importeren veroorzaken
# Maak hier uw mening.
definhoudsopgave(verzoek):
return render (verzoek,'index.html')
Maak een URL-pad
Maak vervolgens een URL-pad voor de weergavefunctie om de sjablonen weer te geven. Importeer de pad functie van django.urls en de weergave functie van weergaven.py bestand. Importeer dan instellingen En statisch om alle afbeeldingen en media weer te geven die u in de sjablonen heeft.
van django.urls importeren pad
van. importeren keer bekeken
van django.conf importeren instellingen
van django.conf.urls.static importerenstatisch
urlpatronen=[
pad('',views.index, naam='inhoudsopgave'),
]
alsinstellingen.DEBUG:
urlpatronen+=statisch(instellingen. MEDIA_URL, document_root=instellingen. MEDIA_ROOT)
Sjablonen maken
Nu je de weergave En URL pad, maak de sjablonen. Maak een basis.html als bovenliggend sjabloon. De basis.html bestand bevat algemene elementen waarmee u wilt delen index.html, de onderliggende sjabloon.
{% belasting bootstrap5 %}
{% belasting statisch %}
<!DOCTYPE html>
<html lang="nl">
<hoofd>
<meta tekenset="UTF-8">
<meta http-equiv="X-UA-compatibel" inhoud="IE=rand">
<metanaam="uitkijk postje" inhoud="breedte=apparaatbreedte, beginschaal=1,0">
<!-- titels -->
{% als titel %}
<titel> Overgenomen sjablonen {{title}}</title>
{% anders %}
<titel> Overgenomen sjablonen </title>
{% stop als %}
{% blokstijlen %}
{% bootstrap_css %}
<link rel="stijlblad" href="{% statisch 'css/stijl.css' %}">
{% eindblok %}
</head>
<lichaam>
{% erbij betrekken 'navbar.html' %}
{% blokinhoud %} {% eindblok %}
<!-- Bootstrap-koppelingen -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js" integriteit="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM" kruisoorsprong="anoniem"></script>
</body>
</html>
Laad eerst de Bootstrap en statische afhankelijkheden op het basis.html sjabloon. Jij kan gebruik het Bootstrap-framework met uw Django-project om de HTML-pagina's op te maken. De statische afhankelijkheid die bovenaan is geladen, laadt middelen die zijn opgenomen in de statische map.
Met Django-sjablonen kunt u stukjes logica doorgeven die verantwoordelijk zijn voor het weergeven van inhoud. Sjabloontags bestaan uit tekst omgeven door "{%" En "%}" karakters. De als/anders instructiecontroles op voorwaarden in de weergavefunctie. Als de voorwaarde waar is, wordt de inhoud in het eerste blok weergegeven; indien onwaar, wordt de inhoud weergegeven in de tweede.
De basis.html bestand zal ook de inhoud van weergeven navbar.html precies waar u de sjabloontags plaatst. Dat betekent dat wanneer u het verlengt basis.html, navbar.html is ook erfelijk. Elke sjabloon die het basis.html zal elk element met een erven {% erbij betrekken %} label.
Elke tekst omgeven door {{}} is een sjabloonvariabele. Sjabloonvariabelen zijn dynamische gegevens die worden geleverd door weergavefuncties. Django gebruikt ook bloktags die een open tag gebruiken, zoals {% blokinhoud %}, en een afsluitende tag, zoals {% eindblok %}.
Met bloktags kunnen de onderliggende sjablonen de inhoud van de bovenliggende sjablonen overschrijven. In dit geval de index.html kan de inhoud ervan vervangen in het gebied dat wordt ingesloten door bloktags. Het zal de ander niet hinderen basis.html componenten.
Laten we de logica toepassen op de index.html
{% verlengt 'basis.html' %}
{% blokinhoud %}
<div klasse="container tekstcentrum" stijl="kleur wit">
<h1>Ik ben de indexsjabloon</h1>
<P>Ik heb Bootstrap en de navbar geërfd van base.html</P>
</div>
{% eindblok %}
In de index.html sjabloon, gebruik de {% verlengen %} tag om onderdelen van het basis.html. Binnen de bloktags {% blokinhoud %}, schrijf al uw code.
In de index.html sjabloon, heb je een H1- en een alinea-element. U kunt de sjabloontags in de div's gebruiken om variabelen aan te roepen vanuit de weergave functie.
Test sjabloonovererving in de browser
U kunt nu de server uitvoeren. Zodra u dit heeft gedaan, controleert u de browser om te zien of de index.html bestand erfde de elementen van basis.html. Dat omvat Bootstrap-links en de navbar.html sjabloon.
De index.html bestand moet de navbar- en Bootstrap-stijlen van de basissjabloon overnemen. Als dat het geval is, hebt u sjabloonovererving correct gebruikt. Zonder dit had je de navigatiebalk en Bootstrap-links moeten toevoegen waar je ze nodig had.
Ook alle wijzigingen die u aanbrengt in de basis.html zal reflecteren over alle sjablonen waartoe het zich uitstrekt. Dit principe is belangrijk bij het afhandelen van fouten. U kunt eenvoudig sjablonen met bugs identificeren.
Sjabloonovererving is een van de vele manieren waarop Django het Don't Repeat Yourself (DRY)-principe implementeert. Het zal uw ontwikkeling veel gemakkelijker en eenvoudiger maken.
Waarom u Django-sjabloonovererving zou moeten gebruiken
Django's overerving van sjablonen is een van de meest complexe functies. Het kan enige tijd duren om het te begrijpen, maar als je het eenmaal begrijpt, scheelt het een hoop ontwikkelingswerk.
Met sjabloonovername kunt u code delen tussen bovenliggende en onderliggende sjablonen. Dit zorgt ervoor dat u geen repetitieve code in uw sjablonen schrijft.
Overerving van sjablonen is belangrijk in grote Django-projecten. In dergelijke gevallen zijn er veel toepassingen en veel sjablonen om te ontwerpen. De bovenliggende sjablonen geven u veel controle over de andere componenten van de toepassing.
Door het Django-sjabloonsysteem te leren, kunt u genieten van het schrijven van schone en krachtige code.