ListView
Часть раздела Представления на основе классов путешествия по 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/.
Попробуйте сами
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"
Все уроки раздела Представления на основе классов
2Универсальные представления для отображения
ListViewDetailViewПотренируйтесь самостоятельно: Песочница Django