Я думаю, что " redirect " недопустимо в методе (form_valid), поэтому вы должны обязательно указать что-то вроде def post и получить значение в request.data. Я собираюсь показать вам код, который работает для меня в производстве. Вы даете мне знать, если это был правильный ответ.
класс LoginFormView (FormInvalidMessageMixin, LoginView):
template_name = "clientes/login.html
def post(self, request, *args, **kwargs):
username = self.request.POST.get('username')
password = self.request.POST.get('password')
tipo_cuenta = self.request.POST.get('tipo-cuenta')
tipo_cuenta = tipo_cuenta.strip()
user = authenticate(username=username, password=password)
if user:
if has_group(user, 'admin'):
messages.success(request, _('Not for admin'))
return redirect('/login')
cliente = Usuario.objects.filter(usuario=user).first()
sucursal = Sucursal.objects.filter(usuario=user).first()
empleado = Empleado.objects.filter(usuario=user).first()
if tipo_cuenta == 'Punto afiliado':
login(self.request, user)
return redirect('/envios')