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