Menu
CoddyTech

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 <li> già pronto per quell'attività e inserirlo nell'elenco. Un template disegna già quella riga, quindi il server dovrebbe riutilizzarlo.

Django 6.0 ha introdotto le parti di template: una parte denominata di un template che puoi anche renderizzare da sola. Racchiudila in {% partialdef %}; inline la disegna anche nel punto in cui si trova, a ogni iterazione di un ciclo. Una vista renderizza solo la parte usando il nome del template, # e il nome della parte:

{% 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.

challenge icon

Sfida

Medio

Servi una riga di /tasks/ da sola:

  • In list.html, rendi <li> una parte denominata task-row, visualizzata comunque per ogni attività.
  • Una vista task_row(request, pk) che renderizza solo quella parte e restituisce 404 se l’attività non esiste.
  • La route "tasks/<int:pk>/row/", denominata task_row.

Premi Run, poi apri /tasks/1/row/: una riga.

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>
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di API JSON

Esercitati da solo: Playground Django