Čtenáři jako vy pomáhají podporovat MUO. Když provedete nákup pomocí odkazů na našich stránkách, můžeme získat provizi přidružené společnosti. Přečtěte si více.

Jednou z nejvýkonnějších funkcí Django je jeho schopnost dynamicky znovu používat kód. Dědičnost šablon umožňuje sdílení kódu mezi nadřazenými a podřízenými šablonami. Výrazně snižuje duplicitu úsilí.

Django má svůj šablonovací jazyk navržený tak, aby splynul s HTML. Pokud jste již dříve pracovali s HTML kódem, zjistíte, že je snadné pracovat se šablonami Django. Ostatní jazyky založené na textových šablonách jako Smarty nebo Jinja2 mají podobnou syntaxi.

Pojďme se dozvědět více o dědění šablon vytvořením projektu Django.

Co je to šablona Django?

V Django je šablona textový soubor, který může generovat jakýkoli textový formát, jako je HTML, XML nebo CSV.

Značky šablony Django ovládat logiku obklopující proměnné a hodnoty v šabloně. Tagy pomáhají oddělit logiku programu od prezentace šablony. Pomáhají také udržovat vaše šablony čisté a organizované.

instagram viewer

Django má mnoho vestavěných značek, které vypadají jako {% tag %}. Tagy jsou užitečné v mnoha ohledech. Mohou vytvářet text na výstupu, provádět smyčky a načítat informace do šablony.

V tomto projektu budete používat značky k demonstraci dědičnosti šablony.

Vytvořte projekt Django

Začít, vytvořit projekt Django. Vytvořte aplikaci s názvem šablony. Jakmile to uděláte, jste připraveni vytvořit funkci zobrazení pro aplikaci, cestu URL a šablony, které demonstrují dědičnost šablon.

Vytvořte funkci zobrazení

Nejprve vytvořte a Pohled funkce, která vykresluje šablony. V tomto případě vykreslíte index.html šablona. Importujte poskytnout metoda z Django zkratek. Potom vytvořte funkci zobrazení s názvem index, která vrátí a vykreslí šablonu indexu.

z django.zkratky import poskytnout
# Zde si vytvořte své názory.
defindex(žádost):
vrátit render (žádost,'index.html')

Vytvořte cestu URL

Dále vytvořte a cesta URL pro funkci zobrazení pro zobrazení šablon. Importujte cesta funkce z django.urls a Pohled funkce od views.py soubor. Poté importujte nastavení a statický k vykreslení jakýchkoli obrázků a médií, které můžete mít v šablonách.

z django.urls import cesta
z. import pohledy
z django.conf import nastavení
z django.conf.urls.static importstatický
urlpatterns=[
cesta('',views.index, name='index'),
]
-linastavení.LADIT:
urlpatterns+=statický(nastavení. MEDIA_URL, document_root=nastavení. MEDIA_ROOT)

Vytvořte šablony

Nyní, když máte Pohled a URL cestu, vytvořte šablony. Chcete-li předvést dědičnost šablony, vytvořte a základna.html jako nadřazená šablona. The základna.html soubor bude mít obecné prvky, se kterými chcete sdílet index.html, podřízená šablona.

{% load bootstrap5 %}
{% zatížení statický %}
<!DOCTYPE html>
<html jazyk="en">
<hlava>
<meta znaková sada="UTF-8">
<meta http-equiv="X-UA-kompatibilní" obsah ="IE=hrana">
<meta jméno="výřez" obsah ="width=device-width, initial-scale=1.0">
<!-- tituly -->
{% if title %}
<titul> Zděděné šablony {{title}}</title>
{% jiný %}
<titul> Zděděné šablony </title>
{% endif %}
{% stylů blokování %}
{% bootstrap_css %}
<odkaz rel="šablona stylů" href="{% statické 'css/style.css' %}">
{% endblock %}
</head>
<tělo>
{% zahrnout 'navbar.html' %}
{% block content %} {% endblock %}
<!-- Bootstrap odkazy -->
<skript src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integrita ="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM" crossorigin="anonymní"></script>
</body>
</html>

Nejprve načtěte Bootstrap a statické závislosti na základna.html šablona. Můžeš použijte rámec Bootstrap s vaším projektem Django pro stylování HTML stránek. Statická závislost načtená nahoře načte aktiva obsažená ve statické složce.

Šablony Django vám umožňují předat kousky logiky zodpovědné za zobrazování obsahu. Značky šablony se skládají z textu obklopeného „{%" a "%}" postavy. The pokud/jinak příkaz kontroluje podmínky ve funkci zobrazení. Pokud je podmínka pravdivá, vykreslí obsah v prvním bloku; pokud je false, vykreslí obsah ve druhém.

The základna.html soubor také vykreslí obsah navbar.html přímo tam, kde umístíte značky šablony. To znamená, kdykoli prodloužíte základna.html, navbar.html se také dědí. Jakákoli šablona rozšiřující základna.html zdědí jakýkoli prvek s a {% zahrnout %} štítek.

Jakýkoli text obklopený {{}} je proměnná šablony. Proměnné šablony jsou dynamická data poskytovaná funkcemi zobrazení. Django také používá blokové značky, které používají otevřenou značku, např {% block content %}a závěrečný tag, jako {% endblock %}.

Značky bloku umožňují podřízeným šablonám přepsat obsah nadřazených šablon. V tomto případě je index.html může nahradit svůj obsah v oblasti ohraničené značkami bloku. Nebude to překážet druhému základna.html komponenty.

Aplikujme logiku na index.html

{% rozšiřuje 'základna.html' %}
{% block content %}
<třída div="kontejnerové textové centrum" styl="barva bílá">
<h1>I Am The Index Template</h1>
<p>Zdědil jsem Bootstrap a navbar z base.html</str>
</div>
{% endblock %}

V index.html šablonu, použijte {% rozšířit %} tag pro rozšíření komponent základna.html. Uvnitř značek bloku {% block content %}, napište celý svůj kód.

V index.html šablona, ​​máte prvek H1 a odstavec. Značky šablony uvnitř divs můžete použít k volání proměnných z Pohled funkce.

Test dědičnosti šablony v prohlížeči

Nyní můžete spustit server. Jakmile tak učiníte, zkontrolujte v prohlížeči, zda index.html soubor zdědil prvky základna.html. To zahrnuje odkazy Bootstrap a navbar.html šablona.

The index.html soubor by měl zdědit styly navbar a Bootstrap ze základní šablony. Pokud ano, použili jste dědičnost šablony správně. Bez něj byste museli přidat navigační panel a odkazy Bootstrap tam, kde jste je potřebovali.

Také jakékoli změny, které provedete v základna.html se projeví ve všech šablonách, na které se vztahuje. Tento princip je důležitý při řešení chyb. Šablony s chybami můžete snadno identifikovat.

Dědičnost šablony je jedním z mnoha způsobů, jak Django implementuje princip Don't Repeat Yourself (DRY). Velmi to usnadní a zjednoduší váš vývoj.

Proč byste měli používat dědičnost šablony Django

Dědičnost šablony Django je jednou z nejkomplexnějších funkcí. Může to chvíli trvat, než to pochopíte, ale jakmile to pochopíte, ušetří to spoustu úsilí při vývoji.

Dědičnost šablon umožňuje sdílet kód mezi nadřazenými a podřízenými šablonami. Tím zajistíte, že do šablon nebudete psát opakující se kód.

Dědičnost šablon je důležitá ve velkých projektech Django. V takových případech existuje mnoho aplikací a mnoho šablon k návrhu. Nadřazené šablony vám poskytují velkou kontrolu nad ostatními komponentami aplikace.

Když se naučíte systém šablon Django, můžete si užít psaní čistého a výkonného kódu.