@RqL

Как работает get_context_data в Django?

Я новичок в Django и недавно узнал о классах ListView и DetailView, в документации говорилось о добавлении дополнительных данных в передаваемый context. Я не понял от кого наследуется context в get_context_data и зачем вызывается эта функция с передачей словаря, у меня это выглядит таким образом
def get_context_data(self, *, object_list=None, **kwargs):
        context = super().get_context_data(**kwargs)
        #context['title'] = 'Название страницы'
        return context

Так же в документации это было описано с классом DetailView, но с классом ListView это так же работает, тогда какое отличие этих классов?
  • Вопрос задан
  • 69 просмотров
Решения вопроса 1
fox_12
@fox_12 Куратор тега Django
Расставляю биты, управляю заряженными частицами
Я не понял от кого наследуется context в get_context_data

Это методы миксинов которые используют как ListView, так и DetailView.
Смотреть исходный код Django где вполне себе видно откуда что берется и от кого наследуется.

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

Обычно она вызывается чтобы получить дефолтный контекст - а проще говоря - переменные которые можно использовать в темплейтах, и добавить туда какие-то свои переменные.

Так же в документации это было описано с классом DetailView, но с классом ListView это так же работает, тогда какое отличие этих классов

Пойти и ознакомиться с базовыми знаниями для для работы с ООП - инкапсуляция, полиморфизм, наследование...
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@bacon
ListView для список объектов
DetailView для одного конкретного объекта
У каждого класса есть иерархия предков, вот от них и идет наследование. Через super ты вызываешь get_context_data непосредственного предка.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
от 150 000 до 180 000 ₽
Appboxo Алматы
от 830 000 до 1 250 000 ₸
Verme Москва
от 120 000 ₽
25 янв. 2021, в 03:37
75000 руб./за проект
25 янв. 2021, в 01:42
999999 руб./за проект
25 янв. 2021, в 00:56
3000 руб./за проект