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 quiere JSON. Después de añadir una tarea, puede pedirle al servidor el <li> ya preparado para 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ó fragmentos de plantilla: una parte con nombre de una plantilla que también puedes renderizar por separado. Envuélvela en {% partialdef name %} y {% endpartialdef %}; con la palabra inline, también se dibuja en su lugar, una vez por cada elemento de un bucle. Una vista renderiza solo la parte usando el nombre de la plantilla, # y el nombre del fragmento:
{% 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 la parte; en este caso, cart. La página y la parte comparten el mismo marcado, así que no pueden desincronizarse.
Desafío
IntermedioSirve una sola fila de la nueva página /tasks/.
- En
tasks/list.html, convierte el<li>del bucle en un parcialinlinellamadotask-row, para que/tasks/siga mostrando todas las filas. - En
tasks/views.py, añadetask_row(request, pk): renderiza solo ese parcial, pasandotask, o muestra la página 404 de Django. - En
tasks/urls.py, añade"tasks/<int:pk>/row/"con el nombretask_row.
Abre /tasks/3/row/: solo Llamar al banco (hecho), sin encabezado.
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