J'ai un LoginForm pour deux types d'utilisateurs, jusqu'à ce que tout fonctionne correctement. Le problème vient quand je fais LoginRequiredMixin
pour n'importe quelle vue, je ne sais pas pourquoi mais redirige vers le success_url du formulaire de connexion. Voici mon LoginForm:Un formulaire de connexion pour deux types de comptes et LoginRequiredMixin dans django
form_valid
méthode rediriger les utilisateurs dépend des perms dont il dispose.
class LoginView(FormView):
form_class = AuthenticationForm
template_name = 'login.html'
def dispatch(self,request,*args,**kwargs):
if request.user.is_authenticated() and request.user.has_perm('users.is_contribuyente'):
return HttpResponseRedirect('/solicitudes-enviadas')
if request.user.is_authenticated() and request.user.has_perm('users.is_professional'):
return HttpResponseRedirect('/panel/inicio')
return super(LoginView,self).dispatch(request,*args,**kwargs)
def form_valid(self,form):
login(self.request,form.get_user())
if self.request.user.has_perm('users.is_contribuyente'):
return redirect('/solicitudes-enviadas')
if self.request.user.has_perm('users.is_professional'):
return redirect('/panel/inicio')
Voici mon point de vue avec un LoginRequiredMixin
:
class SendQuoteView(LoginRequiredMixin,VerifiedUserMixin,FormMixin,DetailView):
login_url = '/entrar/'
model = Request
form_class = SendQuoteForm
template_name = 'send_quote.html'
Disons que c'est l'URL lorsqu'un utilisateur non authentifié tente d'accéder: http://127.0.0.1:8000/entrar/?next=/panel/detalle-solicitud/declaracion-de-renta
. Et laisse indique que l'utilisateur a perm de « is_professional
» Il supose qui doivent rediriger vers /panel/detalle-solicitud/declaracion-de-renta
mais au lieu de cela redirigeant vers /panel/inicio/
, l'URL du instrucion de form_valid
Nouvelle méthode form_valid
uniquement pour le test pour obtenir next
variable:
def form_valid(self, form):
#login(self.request, form.get_user())
next = self.request.GET('next')
print next
return super(LoginView, self).form_valid(form)
Comment puis-je respecter l'URL de LoginRequiredMixin?
@Alasdir Je l'ai implémenté, mais la méthode form_valid ne peut pas obtenir la variable suivante. – dfrojas
Il ne devrait pas y avoir de problème pour obtenir la variable 'next' de la méthode' form_valid'. Assurez-vous que vous utilisez 'self.request.GET', j'avais écrit' request.GET' avant. – Alasdair
Cela ne fonctionne pas, jetez un oeil à ma méthode form_valid, qu'est-ce que je fais mal? Toujours affiche "Aucun". J'ai édité ma question – dfrojas