Parziali di template
Fa parte della sezione API JSON del percorso Django di Coddy. Lezione 14 di 19.
Uno script non vuole sempre JSON. Dopo aver aggiunto un'attività, può chiedere al server il relativo <li> già pronto e inserirlo nell'elenco. Un template disegna già quella riga, quindi il server dovrebbe riutilizzarlo.
Django 6.0 ha aggiunto i partial di template: una parte denominata di un template che puoi anche renderizzare da sola. Racchiudila tra {% partialdef name %} e {% endpartialdef %}; con la parola inline viene anche disegnata sul posto, una volta per ogni elemento di un ciclo. Una vista renderizza solo la parte indicando il nome del template, # e il nome del partial:
{% partialdef cart-total inline %}
<strong>{{ cart.total }}</strong>
{% endpartialdef %}return render(request, "shop/cart.html#cart-total", {"cart": cart})Il contesto deve contenere ciò che la parte legge, in questo caso cart. La pagina e la parte condividono lo stesso markup, quindi non possono divergere.
Sfida
MedioServono da soli una riga della nuova pagina /tasks/.
- In
tasks/list.html, rendi il<li>nel ciclo una parte parzialeinlinedenominatatask-row, in modo che/tasks/continui a visualizzare tutte le righe. - In
tasks/views.py, aggiungitask_row(request, pk): visualizza solo quella parte parziale, passandotask, oppure la pagina 404 di Django. - In
tasks/urls.py, aggiungi"tasks/<int:pk>/row/"con il nometask_row.
Apri /tasks/3/row/: solo Call the bank (done), senza intestazione.
Provalo tu
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>All tasks</title>
</head>
<body>
<h1>All tasks</h1>
<ul id="tasks">
{% for task in tasks %}
<li id="task-{{ task.id }}">{{ task.title }}{% if task.done %} (done){% endif %}</li>
{% endfor %}
</ul>
</body>
</html>
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di API JSON
2Lettura delle richieste
Filtrare con una queryCreare con POST5Progetto: organizzare il lavoro
Progetto: le prioritàProgetto: cancellare le attività completateEsercitati da solo: Playground Django