Menu
CoddyTech

صفحة مؤلف

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

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

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

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

challenge icon

التحدي

متوسط

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

  • اسم المؤلف داخل <h1>، وروابط إلى كتبه.
  • إذا لم يكن هناك مؤلف بالمعرّف المحدد، فستظهر استجابة 404.
  • في /authors/، يرتبط كل اسم داخل <h2> بصفحته.
  • في صفحة الكتاب، يرتبط اسم المؤلف بصفحته.

اضغط على «تشغيل»، ثم انقر على اسم في /authors/.

جرّب بنفسك

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