Get_context_data() missing 1 required positional argument: 'request'
У меня возникла проблема, когда я пытаюсь перенаправить из представления на основе класса без 'redirect' в def get_context_data, я получаю ошибки типа 'str' object has no attribute 'user'. поэтому я думаю, что лучший способ решить это - добавить request как параметр в get_context_data. но я получаю ошибку заголовка.
Вот мои взгляды:
class EstandarViews:
'''Vistas usuario Estandar'''
@staticmethod
def estandar_home(request):
''' Vista del home de estandar '''
return render(request, "pages/editor-estandar/home.html")
class EditorEstandarView(LoginRequiredMixin, TemplateView):
template_name = "pages/editor-estandar/estandar.html"
def get_context_data(self, request, **kwargs):
user = self.request.user
print("usuario: ", user)
if not self.request.user.groups.filter(name="Editor-Estandar").exists():
print("no puedes estar aqui")
return redirect('/home/')
context = super().get_context_data(**kwargs)
context["sedes"] = Sede.objects.values("nombre", "id")
context["recintos"] = Recinto.objects.values("id", "codigo", "nombre")
context["carreras"] = Carrera.objects.values("id", "codigo", "nombre")
return context
editor_estandar_view = EditorEstandarView.as_view()
в ваших представлениях удалите запрос, а затем попробуйте
class EditorEstandarView(LoginRequiredMixin, TemplateView):
template_name = "pages/editor-estandar/estandar.html"
def get_context_data(self, **kwargs):
user = self.request.user
print("usuario: ", user)
if not self.request.user.groups.filter(name="Editor-Estandar").exists():
print("no puedes estar aqui")
return redirect('/home/')
context = super().get_context_data(**kwargs)
context["sedes"] = Sede.objects.values("nombre", "id")
context["recintos"] = Recinto.objects.values("id", "codigo", "nombre")
context["carreras"] = Carrera.objects.values("id", "codigo", "nombre")
return context
editor_estandar_view = EditorEstandarView.as_view()
get_context_data - это метод, поэтому текущий экземпляр всегда передается ему неявно интерпретатором, который обычно называется self.
и, пожалуйста, прочитайте полную документацию по представлениям https://docs.djangoproject.com/en/3.2/topics/class-based-views/#:~:text=A%20view%20is%20a%20callable, by%20harnessing%20inheritance%20and%20mixins.
get_context_data
метод не принимает запрос в аргументах.
Должно быть get_context_data(self, **kwargs)
Если вы хотите иметь доступ к запросу внутри get_context_data
просто используйте self.request