نموذج بحث
جزء من قسم النماذج في رحلة 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في الحقل بعد البحث عنها.
ابحث عن 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