Как вызвать функцию в 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