# Simplificando el desarrollo web dinámico con Django y HTMX (Parte 4) : ¿Cómo se envía el payload? Al realizar solicitudes Ajax utilizando `fetch` de JavaScript, es común enviar un payload construyéndolo directamente con `JSON.stringify()` para las solicitudes POST. Algo así: ```JavaScript fetch("/api/todos/", { method: "POST", headers: { "Content-Type": "application/json", "X-CSRFToken": csrftoken }, body: JSON.stringify({ title: "장보기", done: false, priority: 3 }) }) ``` Entonces, ¿qué ocurre con **HTMX**? ¿Cómo exactamente `hx-post` envía datos al servidor? Muchos ejemplos solo muestran funcionalidades muy básicas, lo que hace sorprendentemente difícil encontrar ejemplos prácticos para enviar payloads complejos. En esta publicación, vamos a desglosar completamente los métodos de envío de datos en HTMX y cómo procesarlos en el servidor.  ------ ## Métodos de envío de datos en HTMX {#sec-1f930b1a0dad} **La forma de enviar payloads con `fetch` y los métodos de envío de datos de `hx-post` son bastante diferentes.** Con `fetch`, el desarrollador crea directamente un objeto y lo convierte a JSON para incluirlo en el cuerpo de la solicitud. Por otro lado, **HTMX, por defecto, recopila los valores presentes en el DOM y los envía**. La filosofía de HTMX no es "construir directamente objetos JS", sino más bien **"recopilar valores de elementos HTML para crear parámetros de solicitud"**. Para esto, generalmente se utilizan los siguientes tres métodos: ### 1) Recopilar y enviar valores basados en formularios {#sec-f5086851ac19} Este es el método más fiel a HTML y el que mejor se adapta a Django. ```html
``` En este caso, HTMX recopila los valores de los campos de entrada dentro del formulario y los incluye en la solicitud. La codificación predeterminada es **URL-encoded form data**, al igual que en una presentación de formulario normal. En una vista de Django, puedes recibirlos como de costumbre: ```Python def create_todo(request): title = request.POST.get("title") priority = request.POST.get("priority") done = request.POST.get("done") ``` ### 2) Incluir valores de otros elementos sin formulario: `hx-include` {#sec-a2c0e1f9e1ca} Se usa cuando deseas adjuntar `hx-post` a un solo botón y enviar solo ciertos valores de entrada que están separados en el DOM. ```HTML ``` `hx-include` incluye los valores de los elementos especificados en la solicitud. Permite crear un resultado similar a un payload sin necesidad de envolver todo en un `