البحث عن الكتب
جزء من قسم النماذج ولوحة الإدارة في رحلة Django على Coddy. الدرس 15 من 23.
يحتاج الرف إلى مربع بحث. تقرأ صفحة البحث ما كتبه الزائر من العنوان. في /search/?q=dune، يُسمّى الجزء الذي يأتي بعد ? سلسلة الاستعلام، ويضع Django أزواجها في request.GET، التي تعمل مثل القاموس. مربع البحث في الترويسة هو نموذج يُنشئ لك هذا العنوان؛ ويتناول قسم النماذج النماذج. ويمكن لصفحة خاصة بنوع أدبي واحد أن تقرأه هكذا:
def by_genre(request):
genre = request.GET.get("genre", "fiction")
books = Book.objects.filter(genre=genre)
return render(request, "books/genre.html", {"genre": genre, "books": books})تعيد .get("genre", "fiction") القيمة الافتراضية عندما لا يحتوي العنوان على genre؛ أما request.GET["genre"] فستُطلق خطأً في هذه الحالة، أي خطأ 500. القيم دائمًا نصوص: تعطي ?page=2 القيمة "2". كل نص يحتوي على النص الفارغ، لذا فإن __icontains="" يطابق كل صف.
التحدي
سهلأضف صفحة بحث. القالب books/search.html جاهز ويتوقع q وbooks.
- عرض
searchيقرأqمن العنوان (نص فارغ عند غيابه) ويعثر على الكتب التي يحتوي عنوانها عليه، بصرف النظر عن حالة الأحرف. - المسار
search/، واسمهsearch.
اضغط على تشغيل، وابحث عن dune في الترويسة، ثم افتح /search/.
جرّب بنفسك
from django.shortcuts import get_object_or_404, render
from .models import Book
def home(request):
books = Book.objects.all()
return render(request, "books/home.html", {"books": books})
def book_detail(request, pk):
book = get_object_or_404(Book, pk=pk)
return render(request, "books/book_detail.html", {"book": book})
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس النماذج ولوحة الإدارة
تدرّب بنفسك: Playground لـ Django