Tengo una vista de inicio de sesión que comprueba si los usuarios de inicio de sesión son clientes o pilotos y los redirige adecuadamente, pero sigo recibiendo un error no definido. Cualquier ayuda será apreciada.
views.py
def signin (request):
if request.method == 'POST':
username = request.POST['username']
password = request.POST['password']
user = auth.authenticate(username=username, password=password)
if user is not None:
auth.login(request,user)
messages.success(request, 'You are now logged in')
if user.role == 'client':
def ef (self):
return redirect(reverse('dashboard', kwargs={"pk": self.pk}))
else:
return redirect(reverse('pilot_dashboard', kwargs={"pk": self.pk}))
else:
messages.error(request, 'Invalid Credentials')
return redirect ('login')
else:
return render (request, 'accounts/signin.html')
3 respuestas
Tiene lo siguiente en su código:
if user.role == 'client':
def ef (self):
return redirect(reverse('dashboard', kwargs={"pk": self.pk}))
else:
return redirect(reverse('pilot_dashboard', kwargs={"pk": self.pk}))
El def ef (self)
no es necesario y tampoco funciona de esta manera. Solo quita esa.
Además, está utilizando self.pk
, que no es posible allí. Si desea acceder a los usuarios pk
, simplemente use user.pk
ya que su usuario se guarda en la variable user
, no self
.
Espero que el siguiente cambio resuelva tu problema.
def signin (request):
if request.method == 'POST':
username = request.POST['username']
password = request.POST['password']
user = auth.authenticate(username=username, password=password)
if user is not None:
auth.login(request,user)
messages.success(request, 'You are now logged in')
if user.role == 'client':
return redirect(reverse('dashboard', kwargs={"pk": user.pk}))
else:
return redirect(reverse('pilot_dashboard', kwargs={"pk": user.pk}))
else:
messages.error(request, 'Invalid Credentials')
return redirect ('login')
else:
return render (request, 'accounts/signin.html')
El principal problema fue que aquí no hay ninguna instancia self
. Este es el usuario, supongo.
No necesitas construcción:
def ef (self):
En realidad, no tiene que devolver la función, debe devolver la redirección.