РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
298 of 818 menu

Метод get_context_data

Метод get_context_data применяется к классу TemplateView и возвращает словарь с данными, которые передаются в шаблон. Этот метод позволяет добавлять произвольные переменные в контекст шаблона, которые можно использовать для отображения динамической информации. Метод вызывается автоматически при обработке запроса и может быть переопределен для передачи специфических данных.

Синтаксис

class MyView(TemplateView): template_name = 'my_template.html' def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) # Добавление своих данных в контекст context['my_variable'] = 'my_value' return context

Пример

Давайте создадим представление, которое передает в шаблон приветственное сообщение и текущую дату:

from django.views.generic import TemplateView from datetime import datetime class GreetingView(TemplateView): template_name = 'greeting.html' def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) context['greeting'] = 'Добро пожаловать на сайт!' context['current_date'] = datetime.now().date() return context

Результат выполнения кода в шаблоне:

{ 'greeting': 'Добро пожаловать на сайт!', 'current_date': datetime.date(2026, 9, 7) }

Пример

Давайте добавим в контекст список последних статей, полученных из базы данных:

from django.views.generic import TemplateView from myapp.models import Article class ArticleListView(TemplateView): template_name = 'articles.html' def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) recent_articles = Article.objects.order_by('-created_at')[:5] context['articles'] = recent_articles return context

Результат выполнения кода:

{ 'articles': [ <Article: latest_article_1>, <Article: latest_article_2>, <Article: latest_article_3> ] }

Пример

Давайте передадим в шаблон данные из URL-параметров с использованием аргументов метода:

from django.views.generic import TemplateView from myapp.models import Category class CategoryDetailView(TemplateView): template_name = 'category_detail.html' def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) category_id = kwargs.get('category_id') category = Category.objects.get(id=category_id) context['category'] = category context['articles'] = category.article_set.all() return context

Результат выполнения кода:

{ 'category': <Category: Technology>, 'articles': [ <Article: Tech_article_1>, <Article: Tech_article_2> ] }

Смотрите также

  • класс TemplateView,
    который используется для рендеринга шаблонов
  • атрибут template_name,
    который определяет имя шаблона для рендеринга
  • класс ListView,
    который автоматически добавляет список объектов в контекст
  • класс DetailView,
    который используется для отображения одного объекта
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить