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.
Défi
FacileAjoutez 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éqet un boutonSearch. - Dans
event_list, affichez uniquement les événements dont le titre contientq, 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
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