Django 表单 EmailField 不接受 css 属性

Django form EmailField doesn't accept the css attribute

我有一个包含一些字段的 from,但是我的 css class 适用于除 EmailField 之外的所有字段。我也试过 sender.widget.attrs.update({'class':"contatct-form"}) 但它仍然不起作用(只需更改字段的大小)。有人知道问题出在哪里吗?因为我所有的搜索都不成功。

形式:

from django import forms
class NameForm(forms.Form):
     your_name = forms.CharField(initial='Your name', max_length=100)
     sender = forms.EmailField()
     #sender.widget.attrs.update({'class':"contatct-form"})
     message = forms.CharField(widget=forms.Textarea)

模板:

        <div class="contatct-form">
            <form action="" method="post">
                {% csrf_token %}
                {{ form }}
                <input type="submit" value="send" />
            </form>
        </div>

您遇到的问题可能是因为您没有为您的 EmailField() 分配任何 小部件,更改为这个(如@ Todor 说)应该有效:

...
sender = forms.EmailField(
    widget=forms.EmailInput(attrs={'class': 'contatct-form'})
) 

如果由于某种原因这不起作用(可能是错误的 css 样式),您可以更改 css/[ 中的样式=18=]class 直接这样:

div.contatct-form form input[type=email] {
    /* your changes here... */
}

希望对您有所帮助。

我们必须在 init 方法中用 for 循环对一个字段或所有字段执行此操作。

class NameForm(forms.Form):
def __init__(*args, **kwargs):
    super(NameForm, self).__init__(*args, **kwargs)
    self.fields['sender'].widget.attrs.update({'class':"contatct-form"})