【问题标题】:Why widget EmailInput style doesn't apply为什么小部件 EmailInput 样式不适用
【发布时间】:2021-08-18 04:57:24
【问题描述】:

我正在尝试设置 django 表单的样式,我可以将类应用于带有小部件的 TextInputs,但对于电子邮件和密码则不适用。知道为什么吗? 另外,如何删除密码上面的文字?密码要求,不是help_text

forms.py

class SignupForm(UserCreationForm):
    email = forms.EmailField()

    class Meta:
        model = User
        fields = ['email', 'first_name', 'last_name', 'password1', 'password2']
        widgets = {
            'email': forms.EmailInput(attrs={'class': 'forms-group__input'}),
            'first_name': forms.TextInput(attrs={'class': 'forms-group__input'}),
            'last_name': forms.TextInput(attrs={'class': 'forms-group__input'}),
            'password1': forms.PasswordInput(attrs={'class': 'forms-group__input'}),
            'password2': forms.PasswordInput(attrs={'class': 'forms-group__input'}),

        }

forms.html

        <form class="forms-group__form" method="POST" enctype="multipart/form-data">
    
        {% csrf_token %}
        {% for field in form %}
            {{ field.errors }} <br>
            <div class="forms-group__input-field">
    
                <label class="forms-group__label">{{ field.label_tag }}</label><br>
    
                {{ field }}<br>
    
                {% if field.help_text %}
                <p class="help">{{ field.help_text|safe }}</p>
                {% endif %}
    
            </div>
        {% endfor %}

    <div class="forms-group__button-div"><input class="button submit-button forms-group__button" type="submit" value="Update Profile"></div>

    </form>

【问题讨论】:

    标签: django django-forms django-widget


    【解决方案1】:

    在表单类中声明的字段不会由ModelForm 自动生成,因此在Metawidgets 属性中为它们声明一个小部件不起作用。您可以放弃在类中声明它并让它自动生成:

    class SignupForm(UserCreationForm):
        email = forms.EmailField()
        ...
    

    或者您可以在字段本身中为该字段指定小部件:

    class SignupForm(UserCreationForm):
        email = forms.EmailField(widget=forms.EmailInput(attrs={'class': 'forms-group__input'}))
        ...
    

    【讨论】:

    • 好的,这适用于电子邮件字段 ty!但是密码的呢,知道吗?
    • @Risker 这些字段也是声明字段(在UserCreationForm 中),因此您需要在表单中重新声明它们。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-13
    • 1970-01-01
    • 1970-01-01
    • 2014-07-25
    • 2022-01-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多