Andrise programmeerimisalane WIKI
Lehemallide pärilikkus
Lehemalle saab ka üksteisest sõltuma panna. Näiteks saab teha ühe peamise lehemalli, mis defineerib ära lehekülje üldise struktuuri, laeb sisse kõik vajalikud CSS ja JavaScript failid ning paneb paika elementide paigutuse (kus asub menüü, kus pealkiri jne) üle terve veebilehe. Seejärel aga saab teha terve hulga erinevaid teema-malle, mis määravad ära ainult konkreetse bloki sisu põhilehel.
<html> <head> <title>{% block nimi %}Vaikimisi nimi{% endblock %}</title> </head> <body> <h1>Minu koduleht</h1> {% block sisu %}Vaikimisi sisu{% endblock %} </body> </html>
Kui sellist lehemalli kasutada, siis on tulemuseks lehekülg, mille pealkirjaks on Vaikimisi nimi ning lehe sisuks pealkiri Minu koduleht ja selle all teade Vaikimisi sisu.
Olulised on siinkohal märgendid BLOCK, sest need ongi teiste lehemallide poolt üle kirjutatavad.
Näiteks kui meil oleks lehemall abi.tpl järgmise sisuga
{% extends "pealeht.tpl" %}
{% block nimi %}Abi{% endblock %}
{% block sisu %}Siin on kirjas abi lehe kasutamise kohta{% endblock %}
siis tulemuseks oleks struktuurilt samasugune leht nagu eelmine, aga seekord oleks lehe pealkiri Vaikimisi nimi asendunud tekstiga Abi ning Vaikimisi sisu oleks asendunud tekstiga Siin on kirjas abi lehe kasutamise kohta. See ongi lehemallide pärilikkus - üksik lehemall saab pärida pealehelt lehekülje struktuuri, aga konkreetse sisu paneb ta sinna ise.
Sellisel juhul ei laeta Pythoni koodis sisse mitte lehemalli pealeht.tpl vaid just malli abi.tpl, kuna see laeb pealeht.tpl faili juba ise sisse käsuga extends. Märksõna extends märgib ära, milliselt lehemallilt põhiosa võetakse, faili asukoht on relatiivses suhtes laadiva failiga (näites peab pealeht.tpl asuma samas kataloogis kus abi.tpl).
Käidud rada: • django_filtrid • bigtable_query • django_muutujad • django_tsueklid • registreerimine • python_tutvustus • django_tutvustus • bigtable_indeksid • django_parilikkus