Menu
CoddyTech

Un formulaire de recherche

Fait partie de la section Formulaires du Journey Django de Coddy. Leçon 1 sur 20.

Les visiteurs ne peuvent pas encore rechercher dans le tableau des événements. Un formulaire est un ensemble de champs et d’un bouton qui envoie à une URL ce qui a été saisi.

Un formulaire qui ne fait que lire des données utilise method="get" : le navigateur place chaque champ dans la chaîne de requête de l’URL, sous la forme name=value. Un filtre par taille sur la page d’une boutique :

<form method="get">
    <select name="size">
        <option value="S">Small</option>
        <option value="L">Large</option>
    </select>
    <button type="submit">Show</button>
</form>

Choisir Large ouvre /products/?size=L. Le name du champ est la clé ; la vue le lit donc comme n’importe quelle chaîne de requête : request.GET.get("size", ""), avec une valeur par défaut pour la page sans filtre.

Après une recherche, la page se recharge et le champ est de nouveau vide. Pour conserver les mots saisis, renvoie-les au modèle et inscris-les dans l’attribut value du champ de saisie.

challenge icon

Défi

Facile

Ajoutez une recherche à la page d’accueil :

  • Au-dessus de la liste dans event_list.html, un formulaire qui envoie son champ dans l’URL : un champ de saisie nommé q et un bouton Search.
  • Dans event_list, affichez uniquement les événements dont le titre contient q, sans tenir compte des majuscules.
  • Le champ conserve la recherche effectuée.

Appuyez sur Run et recherchez jazz.

Essayez vous-même

from django.shortcuts import get_object_or_404, render

from .models import Event


def event_list(request):
    events = Event.objects.all()
    return render(request, "events/event_list.html", {"events": events})


def event_detail(request, pk):
    event = get_object_or_404(Event, pk=pk)
    return render(request, "events/event_detail.html", {"event": event})

Toutes les leçons de Formulaires

Entraînez-vous par vous-même : Playground Django