Как перенаправить пользователя со страницы регистрации в профиль, если он уже зарегистрирован?
Я использую 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)