טופס חיפוש
חלק מהיחידה טפסים במסלול ה-Django של Coddy. שיעור 1 מתוך 20.
מבקרים עדיין לא יכולים לחפש בלוח האירועים. טופס הוא קבוצה של שדות וכפתור ששולח לכתובת URL את מה שהוקלד.
טופס שרק קורא נתונים משתמש ב־method="get": הדפדפן מציב כל שדה במחרוזת השאילתה של כתובת ה־URL, בתור name=value. מסנן מידות בעמוד של חנות:
<form method="get">
<select name="size">
<option value="S">Small</option>
<option value="L">Large</option>
</select>
<button type="submit">Show</button>
</form>בחירה ב־Large פותחת את /products/?size=L. ה־name של השדה הוא המפתח, ולכן התצוגה קוראת אותו כמו כל מחרוזת שאילתה: request.GET.get("size", ""), עם ערך ברירת מחדל עבור העמוד הרגיל.
אחרי חיפוש העמוד נטען מחדש, והתיבה שוב ריקה. כדי להשאיר בה את המילים, מעבירים אותן בחזרה לתבנית וכותבים אותן ב־value של שדה הקלט.
אתגר
קלהוסף חיפוש לדף הבית.
- ב־
event_list.html, מעל<ul class="events">, הוסף טופס עםmethod="get"ובו שדה קלט בשםqוכפתורSearch. - ב־
event_list, השאר את האירועים שהכותרת שלהם מכילה אתq, בלי להתחשב באותיות גדולות וקטנות. - העבר את
qלתבנית עבור ה־valueשל שדה הקלט, כך שחיפוש שלMeetupיישאר בתיבה.
חפש ג׳אז: רק Friday Jazz Night נשאר, ובתיבה עדיין מופיע ג׳אז.
נסו בעצמכם
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})
כל השיעורים ביחידה טפסים
תרגלו בעצמכם: Django אונליין