עמוד לכל ספר
חלק מהיחידה מודלים וממשק הניהול במסלול ה-Django של Coddy. שיעור 14 מתוך 23.
כל ספר זקוק לדף בכתובת משלו: /books/1/, /books/2/. ממיר נתיבים, מתוך Django Basics, לוכד את המספר הזה ומעביר אותו לתצוגה. דף של הספרים משנה אחת:
path("years/<int:year>/", views.books_of_year, name="books_of_year"),
def books_of_year(request, year):
books = Book.objects.filter(year=year)
return render(request, "books/year.html", {"year": year, "books": books})דף עבור שורה אחת מזהה אותה לפי המפתח הראשי שלה, pk: ה-id שלה. קריאה ל-get() כששורה חסרה גורמת לחריגה, וחריגה בתצוגה היא קריסה, שגיאת שרת 500. הפונקציה get_object_or_404() מתוך django.shortcuts מחזירה במקום זאת את התשובה 404 הדף לא נמצא. היא מקבלת את המודל, ואז את התנאים: get_object_or_404(Book, title="Emma").
כדי ליצור קישור לנתיב שלוכד ערך, יש להציב את הערך אחרי השם: {% url 'books:books_of_year' book.year %}.
אתגר
בינוניתן לכל ספר עמוד. התבנית books/book_detail.html מוכנה ומצפה ל־book.
- תצוגה
book_detail(request, pk). מזהה שאין לו ספר מחזיר 404. - נתיב עבור
/books/<id>/בשםbook_detail, שתואם למספרים בלבד. - בדף הבית, כל כותרת מקשרת לעמוד שלה.
לחץ על Run, לחץ על כותרת, ואז פתח את /books/999/.
נסו בעצמכם
from django.shortcuts import render
from .models import Book
def home(request):
books = Book.objects.all()
return render(request, "books/home.html", {"books": books})
כל השיעורים ביחידה מודלים וממשק הניהול
תרגלו בעצמכם: Django אונליין