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.

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 önce

template_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.

challenge icon

Görev

Kolay

Hazır şablon jobs/job_list.html ile, jobs üzerinde döngü kuran işler sayfasını ekle.

  1. jobs/views.py dosyasına, Job için bir ListView olan JobListView ekle. Listesine jobs adını ver, en yeni posted tarihini ilk sıraya koy ve varsayılan şablonu kullan.
  2. jobs/urls.py dosyasına, adı list olan "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