Menu
CoddyTech

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.

challenge icon

Desafío

Intermedio

Sirve una fila de /tasks/ por separado:

  • En list.html, convierte el <li> en una plantilla parcial llamada task-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/", llamada task_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>
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de API JSON

Practica por tu cuenta: Playground de Django