Menu
CoddyTech

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.

Kurulun tüm işleri listeleyen bir sayfaya ihtiyacı var. Bir tablonun satırlarının listesi o kadar yaygın ki Django bunun için görünümü yazdı: ListView. Ona bir model verin; satırları sorgular ve bunları içeren 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ısı önce

template_name belirtilmezse recipes/recipe_list.html oluşturulur: uygulama etiketi, modelin küçük harfli adı ve ardından _list.html. Satırlar object_list ve recipe_list adlarıyla ya da context_object_name içinde belirtilen adla gelir.

ordering, order_by() için kullanılan değerleri kabul eder; bu nedenle ["-minutes"] en uzun süren tarifi ilk sıraya koyar. Bu belirtilmezse satırlar veritabanındaki sırayla gelir.

challenge icon

Görev

Kolay

İş ilanları sayfasını ekleyin. Şablonu jobs/job_list.html hazır ve jobs üzerinde döngü kuruyor.

  • jobs/views.py dosyasında, Job modelinin bir ListView'ı olan JobListView; liste adı jobs ve en yeni posted tarihi ilk sırada olacak şekilde. Varsayılan şablonu kullanın.
  • jobs/urls.py dosyasında, "jobs/" yolunu list adıyla tanımlayın.

Run'a basın ve /jobs/ adresini açın.

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