📝 Django

get_context_data в Django CBV

P
Автор
Pyland
📅
Опубликовано
30.06.2026
⏱️
Время чтения
1 мин
👁️
Просмотров
84
🌿
Уровень
Средний
🐦 💼 ✈️

get_context_data() — метод CBV для передачи дополнительных данных в шаблон.

Базовое использование

from django.views.generic import ListView
from .models import Task, Project

class TaskListView(ListView):
    model = Task
    template_name = 'tasks/task_list.html'

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['projects'] = Project.objects.all()
        context['total_count'] = Task.objects.count()
        context['page_title'] = 'Все задачи'
        return context

В шаблоне

<h1>{{ page_title }}</h1>
<p>Всего задач: {{ total_count }}</p>

<select name="project">
  {% for project in projects %}
    <option value="{{ project.pk }}">{{ project.name }}</option>
  {% endfor %}
</select>

DetailView + дополнительные данные

class TaskDetailView(DetailView):
    model = Task

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['related_tasks'] = Task.objects.filter(
            project=self.object.project
        ).exclude(pk=self.object.pk)[:5]
        context['can_edit'] = self.object.owner == self.request.user
        return context

Данные из запроса

def get_context_data(self, **kwargs):
    context = super().get_context_data(**kwargs)
    context['search_query'] = self.request.GET.get('q', '')
    context['active_filter'] = self.request.GET.get('status', 'all')
    return context

Важно: всегда вызывать super()

def get_context_data(self, **kwargs):
    context = super().get_context_data(**kwargs)  # базовый контекст (object_list и т.д.)
    context['extra'] = 'value'
    return context

Без super() потеряешь object_list, object, view и другие стандартные переменные.

Ваша реакция на статью

💬 Комментарии (0)

🔐 Войдите в систему, чтобы оставить комментарий
🚪 Войти
💭

Комментариев пока нет

Станьте первым, кто поделится мнением об этой статье!

🔗 Похожие

Похожие статьи

Продолжите изучение с этими материалами

📝

pytest-django: тестирование Django

Охватываемые темы: Установка, @pytest.mark.djangodb, Фикстуры, Тестирование views.

📅 30.06.2026 👁️ 132
📝

Django: Теги шаблонов

Теги шаблонов — это логика внутри HTML. В отличие от {{ переменная }}, которая только...

📅 30.06.2026 👁️ 85
📝

Django: Статические файлы

Статические файлы — CSS, JavaScript, изображения, шрифты. Django обрабатывает их особым образом: в разработке раздаёт...

📅 30.06.2026 👁️ 73

Понравилась статья?

Подпишитесь на наши обновления и получайте новые статьи первыми. Развивайтесь вместе с PyLand!