Al post llegan desde un template con formulario, los parámetros password1 y password2. t busca el usuario filtrado por token. Y en profile el usuario tiene el password que habrá que guardar el password1 como nuevo password. (TokenToUser y Profile son dos modelos relacionados, uno contiene el token y el otro el password).
Sale el siguiente error cuando trato de filtrar:
Views.py > CreateNewPasswordView
class CreateNewPasswordView(View):
template_name = "users/crear_password.html"
success_url = reverse_lazy(‘home_app:home’)
def get(self, request, token):
return render(request, self.template_name, {})
def post(self, request, token):
if request.method == 'POST':
password1 = request.POST('password1')
password2 = request.POST('password2')
if password1 == password2:
t = TokenToUser.user.filter(token=token)
u = Profile.objects.filter(user=t)
u.password=password1
u.save()
messages.success(request, 'La nueva contraseña ha sido creada con éxito. Ya puedes iniciar sesión con la nueva contraseña')
template_name2 = "users/login.html"
return render(request, self.template_name2, {})
else:
messages.success(request, 'Las contraseñas deben coincidir. Prueba de nuevo.')
return render(request, self.template_name, {})
Models.py
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
bio = models.TextField(max_length=500, blank=True)
location = models.CharField(max_length=30, blank=True)
birth_date = models.DateField(null=True, blank=True)
email_confirmed = models.BooleanField(default=False)
class TokenToUser(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
token = models.CharField(max_length=34, null=True, blank=False)
status = models.BooleanField(default=False)
date = models.DateTimeField(auto_now_add=True,
verbose_name='Registration date')
def __str__(self):
return self.user.username