Django – #7 – Pierwsza aplikacja – Rozszerzenia szablonów

Wprowadzenie.

W 5 wpisie poświęconym Django omówiłem tworzenie podstawowego szablonu. W zdecydowanej większości przypadków, tworzone przez nas strony, będą składać się z więcej niż jednego szablonu, a kod, który będziemy tam umieszczać, w pewnej części będzie się powtarzał. Przykładem takiego kodu może być pasek menu, który zasadniczno może być zamieszczony w większości szablonów. W celu uniknięcia przepisywania tego samego kodu w każdym szablonie, mamy do dyspozycji, tak zwany mechanizm rozszerzania szablonów, o którym napiszę w tym wpisie.

Zakres artykułu.

  • Tworzenie aplikacji Django – Rozszerzenia szablon

Tworzenie aplikacji Django - Rozszerzenia szablon

Do tej pory stworzyliśmy dwa szablony index.html oraz error404.html. Na podstawie tych dwóch plików jesteśmy już w stanie zauważyć, że część kodu się powtarza. Powtarzająca się część kodu to podstawowa struktura pliku html

Stwórzmy teraz trzeci szablon o nazwie base.html w lokalizacji gdzie znajdują się pozostałe szablony.

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>
            {% block titlepage %}

            {% endblock %}
        </title>
    </head>
    <body>
        {% block mybody %}

        {% endblock %}
    </body>
</html>

Jak możemy zobaczyć we wnętrzu tagu title oraz body pojawiły nam się wstawki Django. Wstawki te to bloki, które zostaną zastąpione innym kodem z innego pliku, jeżeli się do nich odwołamy. 

Przejdźmy teraz do naszego szablonu index.html i go zmodyfikujmy w następujący sposób.

{% extends "myFirstApp/base.html" %}

{% block titlepage %}
    My index title
{% endblock %}

{% block mybody %}
    <h1> My index page </h1>
    {% if movies %}
        <ul>
            {% for my_movie in movies %}
                <li>{{ my_movie.title }}</li>
            {% endfor %}
        </ul>
    {% else %}
        <p>Brak filmów</p>
    {% endif %}
{% endblock %}

W tym miejscu widzimy kolejny nowy element jakim jest wstawka {% extends „ścieżka/do/szablonu/z/kodem/bazowym” %}. Za pomocą tej zmiennej załączamy nasz bazowy szablon. Należy pamiętać, aby wywołanie to znajdowało się na samej górze, ponieważ w pierwszej kolejności musi zostać załadowany szablon podstawowy, a następnie wprowadzane są podmiany kodu w blokach.

Analogicznie zmodyfikujmy plik error404.html.

{% extends "myFirstApp/base.html" %}

{% block titlepage %}
    My 404 Error Page 
{% endblock %}

{% block mybody %}
    <h1>Strona nie została znaleziona :(</h1>
    <p>Upewnij się, że wpisałeś poprawnie adres URL</p>
    <a href="{% url 'index' %}">idź do strony domowej</a>
{% endblock %}

Przeładujmy nasz serwer i sprawdźmy, czy zostały wprowadzone zmiany.

Efekt jaki powinnyśmy otrzymać powinien wyglądać następująco.

strona z prawidłowym adresem URL

strona z błędnym adresem URL

Autor artykułu
Dominik Bednarski

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *