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 في الحقل بعد البحث عنها.

ابحث عن jazz: لن يتبقى سوى Friday Jazz Night، وسيظل الحقل يعرض 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})

جميع دروس النماذج

تدرّب بنفسك: Playground لـ Django