Django как средиректить в методе get_context_data?
Подскажите, как я могу редиректить в функции get_context_data
? Класса UpdateView
Листинг:
class UserUpdateView(UpdateView):
model = User
fields = [...]
template_name_suffix = '_update_form'
def get_context_data(self, **kwargs):
context = super(UserUpdateView, self).get_context_data(**kwargs)
if not self.request.user.pk == self.object.pk:
return redirect('login')
return context
Никак?
get_context_data
возвращает контекст для использования в шаблоне.
Лучше переопределить get/post
, учитывая, что все необходимые данные там будут. Ниже код исходников Django
class BaseUpdateView(ModelFormMixin, ProcessFormView):
"""
Base view for updating an existing object.
Using this base class requires subclassing to provide a response mixin.
"""
def get(self, request, *args, **kwargs):
self.object = self.get_object()
return super().get(request, *args, **kwargs)
def post(self, request, *args, **kwargs):
self.object = self.get_object()
return super().post(request, *args, **kwargs)
Как видите, можно написать
def get(self, request, *args, **kwargs):
self.object = self.get_object()
if not request.user.pk == self.object.pk:
return redirect('login')
return super().get(request, *args, **kwargs)
И все будет работать