Crispy表单当前将我的密码字段显示为明文。我尝试了以下但我仍然无法使用type = password。
Fieldset(
'Enter a password.',
PrependedText('password', '<i class="fa fa-key"></i>',
placeholder='Password',
autocomplete='off',
widget=forms.PasswordInput,
),
),
我也累了type="password"
没有效果。
我没有错误。
答案 0 :(得分:3)
我99.9%肯定您错过了将小部件添加到表单字段声明中。你应该有这样的东西,以显示密码字段:
class MyForm(forms.Form):
...
password = forms.CharField(widget=forms.PasswordInput)
...
布局应该简单:
Layout(
PrependedText('password', '@', placeholder="password", autocomplete='off')
)
widget=
关键字参数是在Django的forms.CharField
构造函数中定义的,而不是在django-cryspy-forms&#39; bootstrap.PrependedText
构造函数。
您可以在Django表单字段here找到更多信息。
如果你有一个模型表单,它可以自动构建(例如使用管理员视图),使用modelform_factory
或自己定义ModelForm。以下是第3种方法的示例。
class MyModelForm(forms.ModelForm):
class Meta:
fields = (... fields you want to include in the form ...)
password = forms.CharField(widget=forms.PasswordInput, ...)
请注意,通过提供模型表单字段覆盖,您还必须提供label,help_text(等)等属性,因为它们不会自动从模型字段中复制。
答案 1 :(得分:2)
我从未和crispy-forms
和formsets好运,所以我只是直接在模板中使用表单。看看是否有效:
<form method="post">{% csrf_token %}
{{ formset.management_form|crispy }}
{% for form in formset %}
<input id="id_form-{{ forloop.counter0 }}-id" name="form-{{ forloop.counter0 }}-id" type="hidden" value="{{ form.instance.pk }}"/>
{{ form|crispy }}
{% endfor %}
</form>
答案 2 :(得分:0)
您需要定义PasswordInput。
class YourForm(forms.ModelForm):
password = forms.CharField(label='Enter Password',widget=forms.PasswordInput(attrs={'placeholder': 'alphanumeric password'}))