Video Corso Django 1.11 - Programmare in Python

Crea il Tuo Blog con Django 1.11 e Bootstrap 3.3.7

06: Templates e Views

Una delle caratteristiche più performanti di Django è la possibilità di utilizzare dei template. In Italiano questo significa "sagoma", o "forma", il modello della pagina che vogliamo mostrare, e questo risulta utilissimo perché ci permette di avere una pagina che è intelligente e riutilizzabile.

Avremo quindi delle pagine che sono automaticamente in grado di riconoscere il contenuto che gli viene passato, quindi possiamo dire che avremo una sorta di scheletro in cui verranno caricati i vari dati di ciascun post del blog, quindi nel nostro caso specifico, il contenuto del post, il titolo del post, e volendo la data di creazione ed ultima modifica.

Un'altra caratteristica molto interessante dei templates, è che ci consentono di delegare il lavoro grafico, quindi la parte grafica ad un designer mentre noi ci occupiamo del motore del sito e della nostra applicazione. In questo modo il grafico non necessariamente deve conoscere Django per poter tirar su una pagina decente!

Quindi, dove inseriamo i nostri templates? Diamo uno sguardo al file settings.py del progetto:

BASE_DIR in settings.py ci dice dove manage.py e settings.py si trova: questo è utile per utilizzare django su sistemi operativi differenti.

        BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

Se andiamo a controllare in DATABASE vediamo che viene utilizzata questa variabile anche per la definizione della locazione del nostro database all'interno del progetto in fase di crezione.

        'NAME': os.path.join(BASE_DIR, 'db.sqlite3')

Vogliamo fare la stessa cosa con TEMPLATES, quindi vogliamo definire una locazione in cui andremo a creare la nostra cartella TEMPLATES contenente appunto i nostri template. Quindi, in settings.py facciamo questa modifica:

        'DIRS': [os.path.join(BASE_DIR, 'templates')]

Creiamo quindi una cartella templates nella stessa cartella dove abbiamo il nostro progetto e la nostra app. Dentro alla nostra cartella creiamo tre file, post_singolo.html in cui verranno renderizzati i post singoli, lista_post.html dove verrá renderizzata la lista dei post e poi contatti.html dove avremo le informazioni di contatto del nostro blog.

Template per ciascun post, "post_singolo.html":

<!--DOCTYPE html -->
<html>
    <body>
        <h1>Post Singolo!</h1>
    </body>
</html>

Template homepage, "lista_post.html":

<!--DOCTYPE html -->
<html>
    <body>
        <h1>Lista dei Post</h1>
    </body>
</html>

Template sezione contatti, "contatti.html":

<!--DOCTYPE html -->
<html>
    <body>
        <h1>Contattaci!</h1>
    </body>
</html>

Possiamo ora modificare le nostre view per far renderizzar loro le nostre pagine html!

def lista_post(request):
    return render(request, "lista_post.html")

def post_singolo(request):
    return render(request, "post_singolo.html")

def contatti(request):
    return render(request, "contatti.html")
Menu della Serie