Menu
CoddyTech

عرض القائمة

جزء من قسم واجهات العرض المعتمدة على الأصناف في رحلة 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"] سيعرض الوصفة الأبطأ أولًا. ومن دونه، تأتي الصفوف بترتيب قاعدة البيانات.

challenge icon

التحدي

سهل

أضف صفحة الوظائف باستخدام القالب الجاهز jobs/job_list.html، الذي يكرّر على jobs.

  1. في jobs/views.py، أضف JobListView، وهو ListView لـ Job. سمِّ قائمته jobs، واجعل تاريخ posted الأحدث أولًا، واستخدم القالب الافتراضي.
  2. في 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"

جميع دروس واجهات العرض المعتمدة على الأصناف

تدرّب بنفسك: Playground لـ Django