2

我想用自定义类呈现密码字段,所以我尝试了这个:

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

您可能会注意到,我尝试在声明和初始化中添加类,但这些都不起作用。该类仍然是默认类。

请注意,对于电子邮件、用户名和其他字段,类/占位符工作正常。我错过了什么吗?

编辑:这可能有助于诊断问题。这是我在 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>
4

1 回答 1

2

您可以在没有 init 方法的情况下直接执行此操作

 password1 = forms.CharField(widget=forms.PasswordInput(
    attrs={'class':'form-control','type':'password', 'name': 'password','placeholder':'Password'}),
    label='')
于 2020-07-07T06:03:27.090 回答