Menu
CoddyTech

صفحة مؤلف

جزء من قسم النماذج ولوحة الإدارة في رحلة Django على Coddy. الدرس 23 من 23.

الجزء الأخير: يحصل كل مؤلف على صفحة خاصة به، ويمكن الوصول إليها من كل مكان يظهر فيه اسم المؤلف. إنها صفحة الكتاب التي أنشأتها في هذا القسم، لكن لنموذج آخر.

فكّر في الطرق الثلاث للوصول إليها. ينقر زائر في /authors/ على اسم. وينقر زائر في صفحة كتاب على «من تأليف Frank Herbert». ويكتب شخص آخر عنوان مؤلف غير موجود، وينبغي أن تظهر له صفحة 404، لا أن يتعطل الموقع.

أنشئ كل رابط باستخدام {% url %} ومعرّف المؤلف، كي تظل الروابط متوافقة مع urls.py إذا تغيّر يومًا ما.

challenge icon

التحدي

متوسط

أنشئ صفحة لكل مؤلف على /authors/<id>/ باسم author_detail.

  1. في books/views.py، اكتب author_detail(request, pk) لعرض books/author_detail.html: الاسم داخل <h1>، ورابطًا لكل كتاب، واستجابة 404 عند إدخال معرّف غير معروف. أضف المسار.
  2. في author_list.html، اربط اسم كل <h2> بصفحة المؤلف.
  3. في book_detail.html، اربط اسم المؤلف فقط: by <a href="/authors/1/">Frank Herbert</a>.

في /authors/، انقر على Frank Herbert: ستحتوي صفحته على رابطين إلى Children of Dune وDune.

جرّب بنفسك

from django.shortcuts import get_object_or_404, render

from .models import Author, Book


def home(request):
    books = Book.objects.select_related("author")
    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})


def search(request):
    q = request.GET.get("q", "")
    books = Book.objects.filter(title__icontains=q).select_related("author")
    return render(request, "books/search.html", {"q": q, "books": books})


def author_list(request):
    authors = Author.objects.prefetch_related("books")
    return render(request, "books/author_list.html", {"authors": authors})
quiz iconاختبر نفسك

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

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

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