Quería crear un formulario para restablecer la contraseña del usuario. Debería tomar el current_password
, y luego el new_password
y el confirm_new_password
. Puedo hacer la validación para verificar que las nuevas contraseñas coincidan. ¿Cómo podría validar el current_password
? ¿Hay alguna forma de pasar el objeto User
al formulario?Formulario Django + para restablecer la contraseña
5
A
Respuesta
6
Django viene con un sistema incorporado en PasswordChangeForm
que puede importar y utilizar en su vista.
from django.contrib.auth.forms import PasswordChangeForm
Pero ni siquiera tiene que escribir su propia vista de restablecimiento de contraseña. Hay un par de vistas django.contrib.with.views.password_change
y django.contrib.auth.views.password_change_done
, que puede enlazar directamente a la configuración de su URL.
0
Encontrado un muy buen ejemplo de esto: http://djangosnippets.org/snippets/158/
[EDIT]
he utilizado el enlace de arriba y hecho algunos cambios. Ellos están aquí abajo:
class PasswordForm(forms.Form):
password = forms.CharField(widget=forms.PasswordInput, required=False)
confirm_password = forms.CharField(widget=forms.PasswordInput, required=False)
current_password = forms.CharField(widget=forms.PasswordInput, required=False)
def __init__(self, user, *args, **kwargs):
self.user = user
super(PasswordForm, self).__init__(*args, **kwargs)
def clean_current_password(self):
# If the user entered the current password, make sure it's right
if self.cleaned_data['current_password'] and not self.user.check_password(self.cleaned_data['current_password']):
raise ValidationError('This is not your current password. Please try again.')
# If the user entered the current password, make sure they entered the new passwords as well
if self.cleaned_data['current_password'] and not (self.cleaned_data['password'] or self.cleaned_data['confirm_password']):
raise ValidationError('Please enter a new password and a confirmation to update.')
return self.cleaned_data['current_password']
def clean_confirm_password(self):
# Make sure the new password and confirmation match
password1 = self.cleaned_data.get('password')
password2 = self.cleaned_data.get('confirm_password')
if password1 != password2:
raise forms.ValidationError("Your passwords didn't match. Please try again.")
return self.cleaned_data.get('confirm_password')
Cuestiones relacionadas
- 1. Cómo restablecer la contraseña de administrador de Django
- 2. Generar URL temporal para restablecer la contraseña
- 3. - Recuperable (Restablecer contraseña)
- 4. ¿Es mejor restablecer la contraseña o devolver la contraseña perdida?
- 5. Diseñar la plantilla de correo para restablecer la contraseña
- 6. ¿Cómo generar una contraseña aleatoria o URL temporal para restablecer la contraseña en Zend Framework?
- 7. Formas seguras para restablecer la contraseña o dar una contraseña anterior
- 8. Restablecer el formulario en VBA
- 9. Renderizar el formulario Editar contraseña con contraseña
- 10. Restablecer el estado de recuperación de contraseña
- 11. Django + PostgreSQL: ¿Cómo restablecer la clave principal?
- 12. Restablecer la contraseña de raíz de MySQL cuando no se conoce la contraseña actual
- 13. Restablecer la contraseña de root de mysql5 en macports
- 14. Cómo recuperar o restablecer la contraseña del paquete SSIS?
- 15. django - django-taggit formulario
- 16. Restablecer la contraseña de ASP.NET: ¿problemas de seguridad?
- 17. ¿Cómo restablecer la contraseña de root de mysql?
- 18. autenticación django sin contraseña
- 19. cómo recuperar la contraseña en django
- 20. django confirmar validador de contraseña
- 21. Cómo puedo restablecer el nombre de usuario y la contraseña para SQL Server 2008
- 22. No se puede iniciar mysqld_safe para restablecer la contraseña de root
- 23. ¿Cómo puedo restablecer una contraseña de usuario en hudson?
- 24. restablecer contraseña de root con configuración mysql incorrecta
- 25. Formulario de actualización Django
- 26. Django pajar formulario personalizado
- 27. Django y la validación del formulario personalizado
- 28. IE no ofrece guardar la contraseña del formulario ASP.NET
- 29. restablecimiento de contraseña Django. No envío de correo
- 30. Cómo restablecer la contraseña del usuario desde la interfaz de administrador
Para mis propósitos esto no funcionaría. Ya que estoy combinando el restablecimiento de contraseña dentro de un formulario que incluye muchas otras cosas. Pero esta sería la forma correcta para este caso de uso. – KVISH
@KVISH Sé que este es un comentario muy tardío, pero para el registro, puede visualizar y procesar más de un formulario de Django dentro de un HTML '