Как перенаправить пользователя со страницы регистрации в профиль, если он уже зарегистрирован?

Я использую Django представления на основе классов для своего проекта и пытаюсь перенаправить пользователя из представления регистрации, если он уже аутентифицирован. Я уже делал это с помощью LoginView, и это было довольно просто и выглядело как добавление нескольких строк кода:

class Login(LoginView):
    authentication_form = CustomAuthenticationForm
    redirect_authenticated_user = True
LOGIN_REDIRECT_URL = "core:profile"

После перехода по url для входа, пользователь попадает на url своего профиля. Абсолютно просто и работает отлично.

Однако для регистрации не существует CBV, поэтому следует использовать CreateView, который не имеет никаких атрибутов для проверки аутентификации пользователя.

Единственный способ сделать что-то подобное - UserPassesTestMixin, но он дает мне только 403 Forbidden, если пользователь аутентифицирован, а не редирект.

Вот мой текущий вид регистрации:

class Registration(UserPassesTestMixin, CreateView):
    form_class = RegistrationForm
    template_name = "registration/user_form.html"
    success_url = reverse_lazy("core:profile")

    def test_func(self):
        return self.request.user.is_anonymous

    def form_valid(self, form):
        print(self.kwargs)
        self.object = form.save(commit=True)
        self.object.is_active = True
        self.object.save()

        login(self.request, self.object, backend="core.auth_backend.AuthBackend")
        return HttpResponseRedirect(self.success_url)

Может быть, кто-то уже сделал это?

Буду очень благодарен за любой совет!

В вашем классе Registration добавьте метод get и удалите метод test_func:

def get(self,request,*args,**kwargs):
    if self.request.user.is_authenticated:
        return HttpResponseRedirect('redirect_url')
    return super().get(request,*args,**kwargs)
Вернуться на верх