Django表单EmailField不接受css属性

时间:2015-03-18 20:20:24

标签: python django django-forms django-templates

我有一个包含一些字段的内容,但我的css类适用于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>

2 个答案:

答案 0 :(得分:11)

您可能遇到的问题是因为您尚未将小部件分配给 EmailField(),更改为此(如@Todor所说)应该可以正常工作:

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

如果由于某种原因(可能是错误的CSS样式)无效,您可以直接更改 css / 中的样式,如下所示:

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

希望这有帮助。

答案 1 :(得分:1)

我们必须在 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"})