# Simplifier le développement web dynamique avec Django et HTMX (Partie 4) : Comment envoyer la charge utile (payload) ? Dans les requêtes Ajax traditionnelles utilisant `fetch` en JavaScript, l'envoi d'une requête POST implique généralement la construction directe de la charge utile (payload) à l'aide de `JSON.stringify()`. Voici un exemple typique : ```JavaScript fetch("/api/todos/", { method: "POST", headers: { "Content-Type": "application/json", "X-CSRFToken": csrftoken }, body: JSON.stringify({ title: "장보기", done: false, priority: 3 }) }) ``` Mais qu'en est-il avec **HTMX** ? Comment `hx-post` transmet-il exactement les données au serveur ? De nombreux exemples se limitent à des fonctionnalités très simples, ce qui rend difficile la recherche d'exemples concrets pour l'envoi de charges utiles complexes. Dans cet article, nous allons détailler les méthodes de transmission de données d'HTMX et la manière de les traiter côté serveur.  ------ ## Les méthodes d'envoi de données avec HTMX {#sec-1f930b1a0dad} L'approche de `fetch` pour la charge utile et la méthode de transmission de données de `hx-post` sont assez différentes. Avec `fetch`, le développeur construit directement l'objet et le convertit en JSON pour l'insérer dans le corps de la requête. HTMX, en revanche, **collecte par défaut les valeurs présentes dans le DOM pour les envoyer**. La philosophie d'HTMX n'est pas de "construire directement des objets JS", mais plutôt de **"collecter des valeurs à partir d'éléments HTML pour créer des paramètres de requête"**. Pour cela, il utilise généralement les trois méthodes suivantes : ### 1) Envoi de valeurs collectées via un formulaire {#sec-f5086851ac19} C'est l'approche la plus fidèle au HTML et qui s'intègre le mieux avec Django. ```html
``` Dans ce cas, HTMX collecte les valeurs des champs de saisie à l'intérieur du formulaire et les inclut dans la requête. L'encodage par défaut est le même que pour une soumission de formulaire classique : **URL-encoded form data**. Dans une vue Django, vous pouvez les récupérer comme d'habitude : ```Python def create_todo(request): title = request.POST.get("title") priority = request.POST.get("priority") done = request.POST.get("done") ``` ### 2) Inclure des valeurs d'autres éléments sans formulaire : `hx-include` {#sec-a2c0e1f9e1ca} Cette méthode est utile lorsque vous souhaitez attacher `hx-post` à un seul bouton et inclure uniquement certaines valeurs d'entrée situées ailleurs dans le DOM. ```HTML ``` `hx-include` inclut les valeurs des éléments spécifiés dans la requête. Cela permet de créer un résultat similaire à une charge utile sans avoir à envelopper le tout dans un `