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.

  1. في books/views.py، اكتب عرضًا باسم search يقرأ q من العنوان (نصًا فارغًا إذا لم يكن موجودًا) ويعثر على الكتب التي يحتوي عنوانها عليه، بصرف النظر عن حالة الأحرف.
  2. في books/urls.py، أضف المسار search/ وسمّه search.

اضغط «العب» وابحث عن dune في الترويسة: تعرض نتائج البحث عن "dune" كتاب Dune، ويُظهر xyz عبارة «لا توجد كتب مطابقة».

جرّب بنفسك

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