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.
לחץ על Run ופתח את /jobs/.
נסו בעצמכם
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 אונליין