صفحة مؤلف
جزء من قسم النماذج ولوحة الإدارة في رحلة Django على Coddy. الدرس 23 من 23.
الجزء الأخير: يحصل كل مؤلف على صفحة خاصة به، مع روابط إليها من كل موضع يظهر فيه اسم مؤلف. إنها صفحة الكتاب التي أنشأتها في هذا القسم، لكن لنموذج آخر.
فكّر في الطرق الثلاث للوصول إليها. ينقر زائر في /authors/ على اسم. وينقر زائر في صفحة كتاب على «من تأليف Frank Herbert». ويكتب شخص ما عنوان مؤلف غير موجود، وينبغي أن يحصل على خطأ 404، لا أن يتسبب في انهيار التطبيق.
أنشئ كل رابط باستخدام {% url %} ومعرّف المؤلف، لكي تتبع الروابط urls.py إذا تغيّر يومًا ما.
التحدي
متوسطامنح كل مؤلف صفحة على /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})
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس النماذج ولوحة الإدارة
تدرّب بنفسك: Playground لـ Django