Создание сайта на Django: Урок 7, представления на основе классов
avatar
7 | (offline)
❤️‍🔥Notehunter Developer
Добавлено:
Категория: Руководства «Django»
Комментариев: 0

Как выглядят представления на основе классов? 

Давайте создадим представление на основе класс для статей, вместо представления на основе функции.

views/articles.py

from django.views.generic import ListView

class ArticleListView(ListView):
    model = Article
    template_name = 'modules/blog/articles/article-list.html'
    context_object_name = 'articles'

Пояснение:

  • Наследуемся от ListView класса, это представление будет обрабатывать наш список.
  • model - название нашей модели, Article. 
  • template_name - название нашего шаблона
  • context_object_name - передаем список для перебора.

Функцию article_list можно удалить

views/articles.py

def article_list(request):
    articles = Article.objects.all()
    return render(request, 'modules/blog/articles/article-list.html', {'articles': articles})

Идем в urls.py и изменяем с

urlpatterns = [
    path('', article_list, name='article-list'),
]

на 

from modules.blog.views import ArticleListView

urlpatterns = [
    path('', ArticleListView.as_view(), name='article-list'),
]

Пояснения:

  • Мы изменили article_list на ArticleListView, импортировав из views/articles.py, и добавили as_view()

Давайте ещё добавим название заголовка <title></title> в нашем представлении для данной главной странички?

Модернизируем наше представление:

views/articles.py

class ArticleListView(ListView):
    model = Article
    template_name = 'modules/blog/articles/article-list.html'
    context_object_name = 'articles'

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['title'] = 'Главная страница'
        return context

Пояснения:

  • Добавляем в наш словарь title, который непосредственно выводим для обработки в шаблоне.

И в main.html изменим на: 

<title>{{ title }}</title>

Давайте запустим и посмотрим на результат.

Как видите, все работает в том же виде, как и должно быть, ещё и с заголовком.

В следующем уроке мы добавим ещё одну статью, попробуем вывести картинку, и напишем функцию для изменения ее имени при загрузке.

Комментарии к статье 0
Комментариев нет
Форма добавления комментария (необходима регистрация)