2010-08-20 25 views
9

que estoy usando un ModelForm para el usuario, así:Django problemas con las contraseñas

class UserForm(forms.ModelForm): 
    class Meta: 
     model = User 
     fields = ('username','password','email',) 

pero el campo de contraseña se muestra como un campo de texto normal, no una entrada de contraseña. ¿Cómo me aseguro de que muestre un campo de contraseña?

yo probamos este:

class UserForm(forms.ModelForm): 
    username = forms.CharField(max_length = 15, min_length = 6) 
    password = forms.PasswordInput() 
    class Meta: 
     model = User 
     fields = ('username','password','email',) 

pero eso no funciona bien.

También estoy tratando de agregar un campo de confirmación de contraseña como tal, pero esto no causa campos que se mostrarán:

class UserForm(forms.ModelForm): 
    username = forms.CharField(max_length = 15, min_length = 6) 
    password = forms.PasswordInput() 
    cpassword = forms.PasswordInput() 

    def clean(self): 
     if self.cleaned_data['cpassword']!=self.cleaned_data['password']: 
      raise forms.ValidationError("Passwords don't match") 

    class Meta: 
     model = User 
     fields = ('username','password','cpassword','email',) 

Respuesta

19

que se está perdiendo la diferencia entre los campos del formulario y formar widgets. El widget es la representación HTML del campo. Si estás en Django 1.2 se puede utilizar esta sintaxis:

EDIT: actualización para incluir confirmación de contraseña

class UserForm(forms.ModelForm): 

    confirm_password = forms.CharField(widget=forms.PasswordInput()) 

    class Meta: 
     model = User 
     fields = ('username','password','email',) 
     widgets = { 
      'password': forms.PasswordInput(), 
     } 
+0

gracias, no sabía que se podía hacer eso habría que ser el mismo cosa para confirmar la contraseña? – JPC

+0

Dado que ese campo no está en el modelo, deberá declararlo por separado ... Actualizaré mi respuesta – Zach

+0

Todavía no estoy seguro de entender por qué tengo que especificar PasswordInput como widget para un CharField . Ambos son formas, ¿no? ¿Por qué no puedo usar PasswordInput? Gracias! – JPC

Cuestiones relacionadas