Как вызвать функцию в django view.py

Мне нужно вызвать функцию get_context_data в моем VacanciesView. Код views.py:

def VacanciesView(request):
    navigate_results = Navigate.objects.all()
    context_vac = { 'navigate_results': navigate_results}
    get_context_data(self, **kwargs)
    return render(request, 'main/vacancies.html', context_vac)


def get_context_data(self, **kwargs):
    context = super(VacanciesView, self).get_context_data(**kwargs)
    context['vacancies'] = sorted(get_vacancies(), key=lambda item: item["published_at"][:10])
    return context

Я пытаюсь сделать это с помощью get_context_data(self, **kwargs), но он выдает: name 'self' is not defined

Вы используете представление на основе функций (FBV), а функция, которую вы пытаетесь использовать, является методом представления на основе классов (CBW).

Вы можете пойти одним из двух путей:

пребывание в FBV:

def VacanciesView(request):
    navigate_results = Navigate.objects.all()
    context = {'navigate_results': navigate_results, 'vacancies': sorted(get_vacancies(), key=lambda item: item["published_at"][:10])}
    return render(request, 'main/vacancies.html', context)

переключиться на CBV:

class VacanciesView(TemplateView):
    template_name = 'main/vacancies.html'

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['navigate_results'] = Navigate.objects.all()
        context['vacancies'] = sorted(get_vacancies(), key=lambda item: item["published_at"][:10])
        return context
Вернуться на верх