ListView
חלק מהיחידה תצוגות מבוססות מחלקות במסלול ה-Django של Coddy. שיעור 4 מתוך 18.
הלוח זקוק לדף שמציג את כל המשרות. רשימה של שורות בטבלה היא דבר נפוץ כל כך, עד ש-Django כתבה את התצוגה: ListView. תנו לה מודל, והיא שולפת את השורות ומרנדרת תבנית שמכילה אותן. כך נראית רשימה באתר מתכונים, באפליקציה recipes:
from django.views.generic import ListView
class RecipeListView(ListView):
model = Recipe
context_object_name = "recipes" # {% for recipe in recipes %}
ordering = ["minutes"] # המהירים ביותר ראשוניםאם לא מציינים template_name, היא מרנדרת את recipes/recipe_list.html: תווית האפליקציה, שם המודל באותיות קטנות, ואז _list.html. התבנית מקבלת תמיד את השורות תחת השם object_list. היא מקבלת אותן גם תחת השם recipe_list, או, אם מגדירים context_object_name, תחת השם הזה במקום זאת.
ordering מקבל את אותם ערכים כמו order_by(), ולכן ["-minutes"] יציב את המתכון האיטי ביותר ראשון. בלעדיו, השורות יופיעו בסדר שבו הן נמצאות במסד הנתונים.
אתגר
קלהוסף את דף המשרות, עם התבנית המוכנה jobs/job_list.html, שעוברת בלולאה על jobs.
- ב־
jobs/views.py, הוסף אתJobListView,ListViewשלJob. תן לרשימה שלו את השםjobs, הצג תחילה את תאריךpostedהחדש ביותר והשאר את תבנית ברירת המחדל. - ב־
jobs/urls.py, הוסף את הנתיב"jobs/"בשםlist.
פתח את /jobs/: Python Developer מופיע ראשון ו־Technical Writer מופיע אחרון.
נסו בעצמכם
from django.views.generic import TemplateView
from .models import Job
class HomeView(TemplateView):
template_name = "jobs/home.html"
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context["count"] = Job.objects.count()
context["latest"] = Job.objects.order_by("-posted").first()
return context
class AboutView(TemplateView):
template_name = "jobs/about.html"
כל השיעורים ביחידה תצוגות מבוססות מחלקות
תרגלו בעצמכם: Django אונליין