Parciales de plantilla
Parte de la sección API JSON del Journey de Django de Coddy. Lección 14 de 19.
Un script no siempre necesita JSON. Después de añadir una tarea, puede pedirle al servidor el <li> ya preparado de esa tarea e insertarlo en la lista. Una plantilla ya dibuja esa fila, así que el servidor debería reutilizarla.
Django 6.0 añadió parciales de plantilla: una parte con nombre de una plantilla que también puedes renderizar por separado. Envuélvela en {% partialdef %}; inline también la dibuja en su lugar, en cada iteración de un bucle. Una vista renderiza solo la parte usando el nombre de la plantilla, # y el nombre del parcial:
{% partialdef cart-total inline %}
<strong>{{ cart.total }}</strong>
{% endpartialdef %}return render(request, "shop/cart.html#cart-total", {"cart": cart})El contexto debe contener lo que lee esa parte; aquí, cart. La página y la parte comparten el mismo marcado, así que no pueden divergir.
Desafío
IntermedioSirve una fila de /tasks/ por separado:
- En
list.html, convierte el<li>en una plantilla parcial llamadatask-row, que se siga mostrando para cada tarea. - Una vista
task_row(request, pk)que renderice solo esa plantilla parcial y devuelva un error 404 si no se encuentra la tarea. - La ruta
"tasks/<int:pk>/row/", llamadatask_row.
Presiona Run y después abre /tasks/1/row/: una fila.
Pruébalo tú mismo
<!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 lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de API JSON
2Lectura de solicitudes
Filtrar con una consultaCrear con POST5Proyecto: Organizar el trabajo
Proyecto: PrioridadesProyecto: Borrar las tareas completadasPractica por tu cuenta: Playground de Django