Förstå mallarv i Django

Förstå mallarv i Django
Läsare som du hjälper till att stödja MUO. När du gör ett köp med hjälp av länkar på vår webbplats kan vi tjäna en affiliate-provision. Läs mer.

En av de mest kraftfulla funktionerna hos Django är dess förmåga att återanvända kod dynamiskt. Mallarv tillåter delning av kod mellan överordnade och underordnade mallar. Det minskar avsevärt dubbelarbete.





Django har sitt mallspråk utformat för att blandas med HTML. Du kommer att tycka att det är lätt att arbeta med Djangos mallar om du har arbetat med HTML-kod tidigare. Andra textbaserade mallspråk som Smarty eller Jinja2 har liknande syntax.





MAKEUSE AV DAGENS VIDEO

Låt oss lära oss mer om mallarv genom att bygga ett Django-projekt.





Vad är en Django-mall?

I Django är en mall en textfil som kan generera vilket textbaserat format som helst, som HTML, XML eller CSV.

hur man berättar vad en raderad youtube -video var

Django mall taggar styr logiken som omsluter variabler och värden i mallen. Taggarna hjälper till att skilja programlogik från mallpresentation. De hjälper också till att hålla dina mallar rena och organiserade.



Django har många inbyggda taggar, som ser ut som {% tag %} . Taggar är användbara på många sätt. De kan skapa text i utdata, utföra loopar och ladda information i mallen.

Du kommer att använda taggar i det här projektet för att demonstrera mallarv.





Skapa ett Django-projekt

För att starta, skapa ett Django-projekt . Skapa en app som heter mallar . När du har gjort det är du redo att skapa en visningsfunktion för appen, en URL-sökväg och mallar för att demonstrera mallarv.

Skapa en visningsfunktion

Skapa först en se funktion som återger mallarna. I det här fallet kommer du att återge index.html mall. Importera framställa metod från Django genvägar. Skapa sedan en vyfunktion med namnet index som returnerar och återger indexmallen.





CC82DAA3D0EBAE3F46C39C4669BA58B5C1E7EF6

Skapa en URL-sökväg

Skapa sedan en URL-sökväg för att visa funktionen för att visa mallarna. Importera väg funktion från django.urls och se funktion från views.py fil. Importera sedan inställningar och statisk för att återge alla bilder och media du kan ha i mallarna.

from django.urls import path 
from . import views
from django.conf import settings
from django.conf.urls.static import static
urlpatterns=[
path('',views.index,name='index'),
]
if settings.DEBUG:
urlpatterns+=static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

Skapa mallar

Nu när du har se och URL sökväg, skapa mallarna. För att demonstrera mallarv, skapa en base.html som en föräldramall. De base.html filen kommer att ha allmänna element som du vill dela med index.html , barnmallen.

{% load bootstrap5 %} 
{% load static %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- titles -->
{% if title %}
<title> Inherited Templates {{title}}</title>
{% else %}
<title> Inherited Templates </title>
{% endif %}
{% block styles %}
{% bootstrap_css %}
<link rel="stylesheet" href="{% static 'css/style.css' %}">
{% endblock %}
</head>
<body>
{% include 'navbar.html' %}
{% block content %} {% endblock %}
<!-- Bootstrap links -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM" crossorigin="anonymous"> </script>
</body>
</html>

Ladda först Bootstrap och statiska beroenden på base.html mall. Du kan använd Bootstrap-ramverket med ditt Django-projekt för att utforma HTML-sidorna. Det statiska beroendet som laddas överst kommer att ladda tillgångar som ingår i den statiska mappen.

Django-mallar låter dig skicka logikbitar som är ansvariga för att visa innehåll. Malltaggar består av text omgiven av ' {% ' och ' %} ' tecken. Den om annat uttalande kontrollerar för villkor i visningsfunktionen. Om villkoret är sant återger det innehållet i det första blocket; om falskt, kommer det att återge innehållet i den andra.

De base.html filen kommer också att återge innehållet i navbar.html precis där du placerar malltaggarna. Det betyder närhelst du förlänger base.html , navbar.html är också ärvt. Varje mall som förlänger base.html kommer att ärva alla element med en {% inkluderar %} märka.

Vilken text som helst omgiven av {{}} är en mallvariabel. Mallvariabler är dynamiska data som tillhandahålls av vyfunktioner. Django använder också blocktaggar som använder en öppen tagg, som {% block content %} , och en avslutande tagg, som {% slutblock %} .

Blocktaggar låter de underordnade mallarna åsidosätta innehållet i de överordnade mallarna. I det här fallet index.html kan ersätta dess innehåll i området som omges av blocktaggar. Det kommer inte att störa den andra base.html komponenter.

Låt oss tillämpa logiken på index.html

{% extends 'base.html' %} 
{% block content %}
<div class="container text-center" style="color: white">
<h1>I Am The Index Template</h1>
<p>I inherited Bootstrap and the navbar from base.html</p>
</div>
{% endblock %}

I den index.html mall, använd {% förlängning %} tagg för att utöka komponenter i base.html . Inuti blocktaggarna {% block content %} , skriv all din kod.

I den index.html mall, har du ett H1- och ett styckeelement. Du kan använda malltaggarna inuti div:erna för att anropa variabler från se fungera.

Testa mallarv i webbläsaren

Du kan nu köra servern. När du har gjort det, kolla i webbläsaren för att se om index.html filen ärvde elementen i base.html . Det inkluderar Bootstrap-länkar och navbar.html mall.

  index.html med navbar från base.html

De index.html filen ska ärva navbar- och Bootstrap-stilarna från basmallen. Om så är fallet har du använt mallarv korrekt. Utan det hade du behövt lägga till navigeringsfältet och Bootstrap-länkar där du behövde dem.

Även alla ändringar du gör i base.html kommer att reflektera över alla mallar som den sträcker sig till. Denna princip är viktig vid felhantering. Du kan enkelt identifiera mallar med buggar.

Mallarv är ett av många sätt som Django implementerar principen Don't Repeat Yourself (DRY). Det kommer att göra din utveckling mycket enklare och enklare.

Varför du bör använda Django Template Arv

Djangos mallarv är en av dess mest komplexa funktioner. Det kan ta lite tid att förstå det, men när du väl gör det sparar det mycket utvecklingsansträngning.

Mallarv låter dig dela kod mellan överordnade och underordnade mallar. Detta säkerställer att du inte skriver repetitiv kod i dina mallar.

Mallarv är viktigt i stora Django-projekt. I sådana fall finns det många applikationer och många mallar att designa. De överordnade mallarna ger dig mycket kontroll över programmets andra komponenter.

Genom att lära dig Django-mallsystemet kan du njuta av att skriva ren och kraftfull kod.