Video Corso Django 1.11 - Programmare in Python

Crea il Tuo Blog con Django 1.11 e Bootstrap 3.3.7

11: Ereditarietà tra Templates

Ora che il nostro "motore" è praticamente pronto, ció che possiamo fare e dare una bella passata di semplificazione anche alla "carrozzeria"! Con questo indendo che andremo ad alleggerire i nostri template html usando l'ereditarietà tra template accessibile in django mediante l'utilizzo dei tag del django template engine.

Il concetto è semplice: abbiamo un template base.html da cui ereditano tutti gli altri template. Il codice viene ereditato tramite l'utilizzo dei tag. Il tutto funzione un pó come una finestra: i template figli avranno una finestra che da sul template genitore, facendoci risparmiare un sacco di tempo in fase di styling.

base.html Questo è il template genitore! i vari tag etc vengono quindi ereditati da tutte le classi figlie che "estendono" questo template genitore, mediante il tag {% extends "base.html" %}

<!--DOCTYPE html -->
<html>

    <title> {% block head_title %}My Django Blog{% endblock head_title%}</title>

    <body>
        <div class="container">
            {% block content %}

            {% endblock content %}
        </div>
    </body>

lista_post.html

{% extends "base.html" %}

    {% block content %}

        {% for object in object_list %}
        <a href="{{object.get_absolute_url}}"><h1>{{object.titolo}}</h1></a>
        {{ object.data }}
        {{ object.contenuto|safe|linebreaks|truncatewords_html:50 }}
        {% endfor %}

    {% endblock content %}

post_singolo.html

{% extends "base.html" %}

    <title> {% block head_title %}{{block.super}} | {{object.titolo}}{% endblock head_title %} </title>

    {% block content %}

    <h1>{{ object.titolo }}</h1>
        <h4>{{ object.data }}</h4>
        {{ object.contenuto|safe|linebreaks }}

    {% endblock content %}

contatti.html

{% extends "base.html" %}

<title>{% block head_title %}{{ block.super }} | Contatti{% endblock head_title %}</title>


{% block content %}

    <h1>Contattaci alla mail:</h1>
    <h2>Mail: mia mail</h2>

{% endblock content %}
Menu della Serie