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)

И все будет работать

Вернуться на верх