English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Django può separare Python e HTML separatamente, con il codice/variabile Python che entra nella vista e il template HTML. Django si affida al funzione di rendering e al linguaggio di template di Django per connetterli.
Questa funzione ha tre parametri −
Richiesta− Inizializzazione della richiestaPercorso del template − Questo è il percorso rispetto alla variabile TEMPLATE_DIRS nel file settings.py del progetto.Dizionario dei parametri − Il dizionario contiene tutte le variabili necessarie nel template. Queste variabili possono essere create o utilizzate tramite locals() attraverso tutte le variabili locali dichiarate nella vista.
Linguaggio di template di Django (DTL)
Il motore di template di Django fornisce un linguaggio piccolo per definire lo strato rivolto agli utenti dell'applicazione.
Visualizzazione delle variabili
Le variabili vengono visualizzate come segue: {{variable}}. Il template viene sostituito dalle variabili inviate dal rendering (render) della vista nel terzo parametro. Cambiamo hello.html per mostrare la data odierna:
hello.html
# Filename: example.py # Copyright: 2020 By w3codebox # Author by: it.oldtoolbag.com # Data: 2020-08-08 <html> <body> {% block content %} </body> </html>
Poi, la nostra vista diventerà -
# Filename: example.py # Copyright: 2020 By w3codebox # Author by: it.oldtoolbag.com # Data: 2020-08-08 def hello(request): today = datetime.datetime.now().date() return render(request, "hello.html", {"today": today})
Ora, otterremo il seguente output dopo aver acceduto all'URL /myapp/hello −
# Filename: example.py # Copyright: 2020 By w3codebox # Author by: it.oldtoolbag.com # Data: 2020-08-08 Hello World!!! Oggi è il 11 Settembre 2015
Come potresti aver notato, se una variabile non è una stringa, Django utilizza il metodo __str__ per mostrarla; e seguendo lo stesso principio, puoi accedere alle proprietà degli oggetti, come in Python. Ad esempio: se vogliamo mostrare l'anno della data, la variabile qui è: {{today.year}}.
Possono aiutarti a visualizzare le variabili modificate. La struttura dei filtri è la seguente: {{var|filters}}.
Un esempio semplice −
− Filtri che troncano la stringa, quindi vedi solo i primi 80 caratteri.
− Converti i caratteri in minuscolo {{string|escape|linebreaks}} - Esegue l'escape del contenuto della stringa e poi converte il ritorno a capo in etichetta.
Puoi anche impostare variabili predefinite.
Le etichette possono eseguire le seguenti operazioni: condizione if, ciclo for, ereditarietà dei template e altro ancora.
Come in Python, puoi usare if, else e elif nei template -
# Filename: example.py # Copyright: 2020 By w3codebox # Author by: it.oldtoolbag.com # Data: 2020-08-08 <html> <body> {% block content %} Hello World!!!<p>Oggi è {{today}}</p> Siamo {% if today.day == 1 %} Il primo giorno del mese. {% elif today == 30 %} L'ultimo giorno del mese. {% else %} Io non lo so. </body> </html>
In questo nuovo template, in base alla data odierna, il template presenterà questo valore.
Come 'if', abbiamo l'etichetta 'for', che viene utilizzata esattamente come in Python. Modifichiamo la lista di viste hello inviata al nostro template -
# Filename: example.py # Copyright: 2020 By w3codebox # Author by: it.oldtoolbag.com # Data: 2020-08-08 def hello(request): today = datetime.datetime.now().date() daysOfWeek = ['Lunedì', 'Martedì', 'Mercoledì', 'Giovedì', 'Venerdì', 'Sabato', 'Domenica'] return render(request, "hello.html", {"today": today, "days_of_week": daysOfWeek})
Questo template viene utilizzato per visualizzare l'elenco - {{ for }} -
# Filename: example.py # Copyright: 2020 By w3codebox # Author by: it.oldtoolbag.com # Data: 2020-08-08 <html> <body> {% block content %} Hello World!!!<p>Oggi è {{today}}</p> Siamo {% if today.day == 1 %} Il primo giorno del mese. {% elif today == 30 %} L'ultimo giorno del mese. {% else %} Io non lo so. {% endif %} <p> {% for giorno in giorni_della_settimana %} {{giorno}} </p> </body> </html>
Dovremmo ottenere il seguente contenuto di output -
# Filename: example.py # Copyright: 2020 By w3codebox # Author by: it.oldtoolbag.com # Data: 2020-08-08 Hello World!!! Oggi è il 11 Settembre 2015 Siamo io, non so. Lunedì Martedì Mercoledì Giovedì Venerdì Sabato Domenica
Etichette di blocco e di estensione
Il sistema di template è l'erede di template incompleto. Quando progettate il significato dei template, il template secondario riempirà il template principale secondo le sue necessità, come una scheda selezionata in una pagina potrebbe necessitare di un CSS speciale.
Modifichiamo il template hello.html per ereditare da main_template.html.
main_template.html
# Filename: example.py # Copyright: 2020 By w3codebox # Author by: it.oldtoolbag.com # Data: 2020-08-08 <html> <head> <title> {% block title %}Titolo della pagina{% endblock %} </title> </head> <body> {% block title %}La mia pagina Hello{% endblock %} Contenuto del corpo {% endfor %} </body> </html>
hello.html
# Filename: example.py # Copyright: 2020 By w3codebox # Author by: it.oldtoolbag.com # Data: 2020-08-08 {% extends "main_template.html" %} {% extends "main_template.html" %} {% block title %}La mia pagina Hello{% endblock %} {% block content %} Hello World!!!<p>Oggi è {{today}}</p> Siamo {% if today.day == 1 %} Il primo giorno del mese. {% elif today == 30 %} L'ultimo giorno del mese. {% else %} Io non lo so. {% endif %} <p> {% for giorno in giorni_della_settimana %} {{giorno}} </p> {% endfor %}
{% endblock %}
Nell'esempio sopra, chiamando /myapp/hello, otteniamo ancora lo stesso risultato come prima, ma ora ci affidiamo all'estensione e non dobbiamo ristrutturare il codice-−
Tag di commento