Menu
CoddyTech

טופס חיפוש

חלק מהיחידה טפסים במסלול ה-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 של שדה הקלט.

challenge icon

אתגר

קל

הוסיפו חיפוש לדף הבית:

  • מעל הרשימה שב־event_list.html, הוסיפו טופס ששולח את השדה שלו בכתובת ה־URL: שדה קלט בשם q וכפתור Search.
  • ב־event_list, הציגו רק את האירועים שהכותרת שלהם מכילה את q, ללא תלות באותיות גדולות או קטנות.
  • תיבת החיפוש שומרת את מונח החיפוש שהוזן.

לחצו על Run וחפשו את jazz.

נסו בעצמכם

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 אונליין