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