Menu
CoddyTech

البحث عن الكتب

جزء من قسم النماذج ولوحة الإدارة في رحلة 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="" يطابق كل صف.

challenge icon

التحدي

سهل

أضف صفحة بحث. القالب 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})
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

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

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