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