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.
Défi
FacileAjoute une recherche à la page d’accueil.
- Dans
event_list.html, au-dessus de<ul class="events">, ajoute un formulaire avecmethod="get"contenant un champ nomméqet un boutonSearch. - Dans
event_list, conserve les événements dont le titre contientq, sans tenir compte des majuscules. - Transmets
qau modèle pour l’attributvaluedu champ, afin qu’une recherche deMeetupreste 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
1Formulaires HTML
Un formulaire de rechercheUn formulaire POSTRedirection après POST3Formulaires de modèle
Un formulaire de modèleModifier un événementSupprimer un événementMessages de réussiteEntraînez-vous par vous-même : Playground Django