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 de 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 la zone de saisie est de nouveau vide. Pour conserver les mots saisis, transmettez-les au modèle et écrivez-les dans la propriété value du champ de saisie.

challenge icon

Défi

Facile

Ajoute une recherche à la page d’accueil.

  1. Dans event_list.html, au-dessus de <ul class="events">, ajoute un formulaire avec method="get" contenant un champ nommé q et un bouton Search.
  2. Dans event_list, conserve les événements dont le titre contient q, sans tenir compte des majuscules.
  3. Transmets q au modèle pour l’attribut value du champ, afin qu’une recherche de Meetup reste affichée dans le champ.

Recherche jazz : il ne reste que Friday Jazz Night, et le champ affiche toujours 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