Menu
CoddyTech

Parciais de template

Parte da seção APIs JSON do Journey de Django da Coddy. Lição 14 de 19.

Um script nem sempre precisa de JSON. Depois de adicionar uma tarefa, ele pode pedir ao servidor o <li> pronto dessa tarefa e inseri-lo na lista. Um template já desenha essa linha, então o servidor deve reutilizá-lo.

O Django 6.0 adicionou parciais de template: um trecho nomeado de um template que você também pode renderizar sozinho. Envolva-o em {% partialdef %}; inline também o desenha no próprio lugar, a cada iteração de um loop. Uma view renderiza apenas o trecho usando o nome do template, # e o nome da parcial:

{% partialdef cart-total inline %}
    <strong>{{ cart.total }}</strong>
{% endpartialdef %}
return render(request, "shop/cart.html#cart-total", {"cart": cart})

O contexto precisa conter o que o trecho lê, neste caso, cart. A página e o trecho compartilham a mesma marcação, então não podem divergir.

challenge icon

Desafio

Médio

Exiba uma linha de /tasks/ por conta própria:

  • Em list.html, transforme o <li> em um parcial chamado task-row, que ainda é renderizado para cada tarefa.
  • Uma view task_row(request, pk) que renderiza apenas esse parcial e retorna 404 se a tarefa não existir.
  • A rota "tasks/<int:pk>/row/", chamada task_row.

Clique em Run e depois abra /tasks/1/row/: uma linha.

Experimente você mesmo

<!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 iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de APIs JSON

Pratique por conta própria: Playground de Django