2010-08-20 22 views
9

sto usando un ModelForm per l'utente in questo modo:Django problemi di password

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

ma il campo della password si presenta come un campo di testo normale, non un inserimento della password. Come posso assicurarmi che mostri un campo password?

ho provato questo:

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

ma che non funziona neanche.

Sto anche cercando di aggiungere un campo Conferma password in questo modo, ma questo non provoca campi devono essere visualizzati:

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',) 

risposta

19

vi state perdendo la differenza tra i campi del modulo e formare i widget. Il widget è la rappresentazione HTML del campo. Se siete su Django 1.2 è possibile utilizzare la seguente sintassi:

EDIT: aggiornamento per includere la password di conferma

class UserForm(forms.ModelForm): 

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

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

grazie, non sapevo che si potesse fare sarebbe lo stesso cosa per confermare la password? – JPC

+0

Dato che quel campo non è nel modello, dovrai dichiararlo separatamente ... Aggiornerò la mia risposta – Zach

+0

Non sono ancora sicuro di aver capito perché devo specificare PasswordInput come widget per un CharField . Sono entrambe le forme, no? Perché non posso semplicemente usare PasswordInput? Grazie! – JPC

Problemi correlati