1
Django的密码字段输入尽管widget=forms.PasswordInput
声明:Django的密码字段输入显示为明文尽管forms.PasswordInput声明显示为明文
forms.py
from django.contrib.auth.models import User
class LoginForm(forms.ModelForm):
# specify password type so that passwords show up as *******, not plaintext
# but this doesn't work if placeholder = ''
password = forms.CharField(widget=forms.PasswordInput)
class Meta:
model = User
fields = ["username", "password"]
def __init__(self, *args, **kwargs):
# first call the 'real' __init__()
super(LoginForm, self).__init__(*args, **kwargs)
# then do extra stuff:
self.fields['username'].help_text = ''
self.fields['password'].widget = forms.TextInput(attrs={'placeholder': ''})
self.fields['password'].widget.attrs['class'] = 'form-control'
所以有趣的是,当我面这种形式在模板中,password
值显示为纯文本而不是'******'文本。但只有当我添加'placeholder': ''
行。我检查了表单元素,并发现当我添加'placeholder': ''
行时,type='password'
在呈现的HTML中的<input type='FOO'></input>
元素中被更改为type='text'
。
- >如何防止这种情况发生,所以密码会继续显示为纯文本,而不会删除我的'placeholder': ''
行?
不错;比我想出的答案更好! –
(删除我的答案,因为它没有得到根本问题) –
这真的很酷。不过,我在不同的场景中使用了它。谢谢。 –