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})

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

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