Как проверить тип пользователя после входа в систему? DJANGO
В моем приложении есть два типа пользователей. Как мне проверить тип пользователя после входа в систему? Мое представление входа расширяет LoginView от django. В моем представлении входа я пробовал использовать form_valid, но я думаю, что он делает проверку перед аутентификацией.
models.py
class CustomUser(AbstractUser):
is_client = models.BooleanField(default=False)
is_supermarket = models.BooleanField(default=False)
def __str__(self):
return self.username
views.py
class LoginView(LoginView):
def get(self, request, *args, **kwargs):
#check if the user is logged in and redirect to home page
if request.user.is_authenticated:
return redirect('produtos:home')
return super(LoginView, self).get(request, *args, **kwargs)
Это то, что вам нужно?
class LoginView(LoginView):
def get(self, request, *args, **kwargs):
#check if the user is logged in and redirect to home page
if request.user.is_authenticated:
return redirect('produtos:home')
if request.user.is_supermarket:
return redirect('supermarket-login') #your unique login page for supermarket user
return super(LoginView, self).get(request, *args, **kwargs)
Не знаю, лучший ли это подход, но я получаю ожидаемое поведение
class LoginView(LoginView):
def get(self, request, *args, **kwargs):
if request.user.is_authenticated:
return redirect('produtos:home')
return super(LoginView, self).get(request, *args, **kwargs)
def form_valid(self, form):
if form.get_user().is_supermarket:
self.request.session.flush()
logout(self.request)
return redirect('login')
return super().form_valid(form)