我想用一个自定义类来呈现密码字段,所以我尝试了这个:
from django.contrib.auth import get_user_model
from django.db import transaction
User = get_user_model()
class SignupForm(forms.ModelForm):
first_name = forms.CharField(label=_(u'First name'), max_length=30)
last_name = forms.CharField(label=_(u'Last name'), max_length=30)
password1 = forms.CharField(widget = forms.PasswordInput(render_value = True, attrs={'class': 'form-control', 'placeholder': 'Your password'}))
def __init__(self, *args, **kwargs):
super(SignupForm, self).__init__(*args, **kwargs)
self.fields['username'].widget.attrs.update({'class': 'form-control', 'placeholder': 'Your username'})
self.fields['first_name'].widget.attrs.update({'class': 'form-control', 'placeholder': 'Your first name'})
self.fields['last_name'].widget.attrs.update({'class': 'form-control', 'placeholder': 'Your last name'})
self.fields['email'].widget.attrs.update({'class': 'form-control', 'placeholder': 'Your email address'})
self.fields['password1'].widget.attrs.update({'class': 'form-control', 'placeholder': 'Your password'})
正如你可能注意到的,我试图在声明和初始化中添加类,但这些都不起作用。类仍然是默认类。
请注意,对于email、username和其他字段,class/placeholder可以正常工作。我错过什么了吗?
编辑:这可能有助于诊断问题。这是我在HTML中使用的:
<div class="col-md-6">
<br />
<div class="form-group">
<label for="password1">{{ form.password1.label }}</label>
{{ form.password1 }}
{% if form.password1.errors %}
<div class="text-danger">{{ form.password1.errors|escape }}</div>
{% endif %}
</div>
</div>
2条答案
按热度按时间qncylg1j1#
您可以直接执行此操作,而无需init方法
6pp0gazn2#
Ngawang13's answer为我解决了问题中的问题-即类被设置为
form-control
。然而,为了扩展Ngawang 13的答案,如果你想在多个地方使用这个字段,你可以创建一个自定义字段类。