ListView
Coddy'nin Django Journey'sinin Sınıf Tabanlı Görünümler bölümünün bir parçası. Ders 4 / 18.
Yönetim kurulunun her işi listeleyen bir sayfaya ihtiyacı var. Bir tablonun satırlarını listelemek o kadar yaygın ki Django bu görünümü yazmış: ListView. Ona bir model ver; satırları sorgular ve bunlarla bir şablon oluşturur. recipes uygulamasındaki bir tarif sitesinin listesi:
from django.views.generic import ListView
class RecipeListView(ListView):
model = Recipe
context_object_name = "recipes" # {% for recipe in recipes %}
ordering = ["minutes"] # en hızlı olanlar öncetemplate_name belirtilmezse recipes/recipe_list.html oluşturulur: uygulama etiketi, modelin küçük harfli adı ve ardından _list.html. Şablon satırları her zaman object_list adıyla alır. Ayrıca bunları recipe_list adıyla veya context_object_name ayarladığında bunun yerine belirttiğin adla da alır.
ordering, order_by() metodunun aldığı değerleri alır; dolayısıyla ["-minutes"] en yavaş tarifi ilk sıraya koyar. Bu belirtilmezse satırlar veritabanındaki sırayla gelir.
Görev
KolayHazır şablon jobs/job_list.html ile, jobs üzerinde döngü kuran işler sayfasını ekle.
jobs/views.pydosyasına,Jobiçin birListViewolanJobListViewekle. Listesinejobsadını ver, en yenipostedtarihini ilk sıraya koy ve varsayılan şablonu kullan.jobs/urls.pydosyasına, adılistolan"jobs/"yolunu ekle.
/jobs/ adresini aç: Python Developer ilk, Technical Writer son sırada.
Kendin dene
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"
Sınıf Tabanlı Görünümler bölümündeki tüm dersler
Kendi başına pratik yap: Django playground