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.
Desafio
MédioExiba uma linha de /tasks/ por conta própria:
- Em
list.html, transforme o<li>em um parcial chamadotask-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/", chamadatask_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>
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
2Lendo requisições
Filtrando com uma consultaCriando com POST5Projeto: Organizando o Trabalho
Projeto: PrioridadesProjeto: Limpar Tarefas ConcluídasPratique por conta própria: Playground de Django