A Django-sablonok használatának első lépései

Befejeződött

A sablonok szöveges fájlok, amelyek szövegalapú formátumok, például HTML vagy XML létrehozására használhatók. Minden sablon tartalmaz néhány statikus adatot, amelyek a webhelyen vannak megosztva, de a dinamikus adatok helyőrzőit is tartalmazhatják. A sablonok változókat és címkéket tartalmaznak, amelyek szabályozzák a viselkedést, és azt, hogy mi jelenik meg az utolsó oldalként.

Nézzük meg, hogyan működnek a sablonok a Django-ban.

Változók

A sablon változói ugyanúgy viselkednek, mint bármely más programozási nyelven. Ezekkel megjelölhetjük a futásidőben kiértékelt értékeket.

A Django lehetővé teszi a változók sablonban való megjelenítését a {{ }} szintaxis használatával. A dupla kapcsos zárójelek közé helyezett változók kiértékelése a szövegtartalom alapján történik, majd a sablonba kerül. Ha például a kutya nevét szeretnénk megjeleníteni, használhatjuk {{dog.name}}.

A nézet a függvény használatával továbbítja a változókat egy render sablonba, amelyet egy későbbi modulban fogunk megvizsgálni. Értékeket és egyéb adatokat továbbíthat egy sablonnak, beleértve a Django ORM lekérdezéskészletét is. Ez lehetővé teszi az alkalmazás adatbázisából származó adatok megjelenítését.

Filters

A szűrőkkel szabályozható, hogy az adatok hogyan jelenjenek meg, amikor egy sablonban kérik. Mivel a szűrők már létrejöttek, egyszerűen formázhatja az adatokat anélkül, hogy speciális kódot kellene írnia.

Tegyük fel például, hogy ki kell nyomtatnunk a kutyafajták nevét, és meg szeretnénk győződni arról, hogy minden név első betűje nagybetűs.

{{ dog.name | capfirst }}

A változó a csőszimbólumtól| () balra, a szűrő pedig a jobb oldalon található. Ez csak egy a számos szűrő közül, amellyel a Django-sablonszűrők használatakor módosíthatja az adatokat.

Tags

Címkék használatával hurkokat hajthat végre, szöveget hozhat létre, vagy más típusú parancsokat adhat meg a sablonmotorhoz. A címkék gyakran hasonlítanak a Python szintaxisára. Mivel azonban a sablonban futnak (a Python-értelmező helyett), a szintaxisban némi eltérést tapasztalhat. Ha nem tudunk a Pythonhoz hasonló lapokra támaszkodni, minden blokkutasításhoz szükség lesz egy megfelelőre end.

Logikai logika utasításait és for ismétlési ciklusokat is használhatunkif. Az utasítások alapvető szintaxisa if a következőhöz hasonlóan néz ki:

{% if dogs %}
    <h2>There are {{ dogs | length }} ready for adoption!</h2>
{% else %}
    <h2>We have no dogs ready for adoption. Please check back later!</h2>
{% endif %}

Megjegyzés:

Az elif utasítás ugyanúgy használatos, mint elif a Pythonban.

Hasonlóképpen használhatunk egy hurkot for a listában szereplő összes kutya nevének megjelenítéséhez:

<ul>
    {% for dog in dogs %}
        <li>{{ dog.name }}</li>
    {% endfor %}
<ul>

Sablonöröklés

A sablonok segítségével létrehozhatja azt a HTML-fájlt, amelyet a felhasználó látni szeretne az alkalmazás használata során. Az alkalmazások lapjai általában közös szerkezetet használnak, ahol a navigáció a bal oldalon lehet, a cím a tetején található, és van egy egységes stíluslap. A Django-sablonok örökléssel támogatják a megosztott struktúrákat.

Szülőlap létrehozása

A szülőlap létrehozása ugyanaz, mint bármely Django HTML-sablon létrehozása. Adja meg a külső struktúrát, majd adja meg {% block %} a helyőrzőket. Ezek a helyőrzők lehetővé teszik, hogy a gyermekek biztosítják a tartalom elhelyezését ezekben a helyőrzőkben.

Hozzunk létre egy szülőlapot egy stíluslap importálásához, egy alapértelmezett cím megadásához és egy fejléc megadásához, amelyet minden oldalon meg szeretnénk jeleníteni:

<html>
<head>
    <link rel="stylesheet" href="site.css">
    <title>{% block title %}Shelter site{% endblock %}</title>
</head>
<body>
    <h1>Shelter site</h1>
    {% block content %}
    {% endblock %}
</body>
</html>

Gyermeklap létrehozása

A kulcsszó használatával létrehozhatunk egy gyermeklapot a extends szülőből. Ezzel a kulcsszóval megadjuk a szülősablon HTML-fájljának nevét. Ezután a megfelelő {% block %} utasításokat használva hozzáadjuk az adott lapra vonatkozó tartalmat.

{% extends "parent.html" %}

{% block title %}
Welcome to the Shelter site!
{% endblock %}

{% block content %}
Thank you for visiting our site!
{% endblock %}

A lap megjelenésekor a következőhöz hasonlóan néz ki:

<html>
<head>
    <link rel="stylesheet" href="site.css">
    <title>Welcome to the shelter site</title>
</head>
<body>
    <h1>Shelter site</h1>
    Thank you for visiting our site!
</body>
</html>

Figyelje meg, hogyan cseréli le a helyőrzőket a gyermekoldal tartalma.

Megjegyzés:

Ebben a példában statikus szöveget használtunk. Ahogy látni fogja, dinamikus tartalmakat is használhat.