# Dynamische Webentwicklung mit Django und HTMX vereinfachen (Teil 4): Wie werden Payloads gesendet? Im Gegensatz zu herkömmlichen Ajax-Anfragen mit `fetch` in JavaScript, bei denen man für POST-Anfragen den Payload oft direkt mit `JSON.stringify()` zusammenstellt, wie zum Beispiel: ```JavaScript fetch("/api/todos/", { method: "POST", headers: { "Content-Type": "application/json", "X-CSRFToken": csrftoken }, body: JSON.stringify({ title: "장보기", done: false, priority: 3 }) }) ``` Wie handhabt das **HTMX**? Wie genau sendet `hx-post` Daten an den Server? Da viele Beispiele nur sehr einfache Funktionen zeigen, ist es überraschend schwer, praktische Beispiele für die Übertragung komplexer Payloads zu finden. Dieser Beitrag wird die Datenübertragungsarten in HTMX und deren Verarbeitung auf dem Server vollständig erläutern.  ------ ## HTMX-Datenübertragungsarten {#sec-1f930b1a0dad} **Der Ansatz für den Payload bei `fetch` und die Datenübertragungsart von `hx-post` unterscheiden sich erheblich.** Bei `fetch` erstellt der Entwickler direkt ein Objekt und wandelt es in JSON um, das dann in den Body gelegt wird. **HTMX hingegen sammelt grundsätzlich Werte aus dem DOM und sendet diese.** Die Denkweise von HTMX ist nicht, „JS-Objekte direkt zusammenzustellen“, sondern **„Werte aus HTML-Elementen zu sammeln, um Anfrageparameter zu erstellen“**. Dafür werden üblicherweise die folgenden drei Methoden verwendet: ### 1) Werte über Formulare sammeln und senden {#sec-f5086851ac19} Dies ist die HTML-konformste Methode und passt gut zu Django. ```html
``` In diesem Fall sammelt HTMX die Eingabewerte innerhalb des Formulars und sendet sie in der Anfrage. Die Standardkodierung ist **URL-encoded form data**, genau wie bei einer normalen Formularübermittlung. In einer Django-View kann man sie wie gewohnt empfangen: ```Python def create_todo(request): title = request.POST.get("title") priority = request.POST.get("priority") done = request.POST.get("done") ``` ### 2) Werte anderer Elemente ohne Formular einbeziehen: `hx-include` {#sec-a2c0e1f9e1ca} Dies wird verwendet, wenn man `hx-post` an einen einzelnen Button anfügt und nur bestimmte, weiter entfernte Eingabewerte mitsenden möchte. ```HTML ``` `hx-include` fügt die Werte der angegebenen Elemente der Anfrage hinzu. Man muss nicht das gesamte Element in `