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

אתגר

קל

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

  1. ב־event_list.html, מעל <ul class="events">, הוסף טופס עם method="get" ובו שדה קלט בשם q וכפתור Search.
  2. ב־event_list, השאר את האירועים שהכותרת שלהם מכילה את q, בלי להתחשב באותיות גדולות וקטנות.
  3. העבר את 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 אונליין