【问题标题】:Django form EmailField doesn't accept the css attributeDjango 表单 EmailField 不接受 css 属性
【发布时间】:2015-05-21 19:38:59
【问题描述】:

我有一个包含一些字段的 from,但我的 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>

【问题讨论】:

  • 你试过sender = forms.EmailField(widget=forms.TextInput(attrs={'class': 'contatct-form'}))。顺便说一句,contatct-form 不是错字吗?
  • @Todor 是的,不是!
  • 顺便说一句,当我在 python shell 中测试你的代码时,它的工作原理。 (我得到了 "contatct-form" 类包括 &lt;tr&gt;&lt;th&gt;&lt;label for="id_sender"&gt;Sender:&lt;/label&gt;&lt;/th&gt;&lt;td&gt;&lt;input class="contatct-form" id="id_sender" name="sender" type="email" /&gt;&lt;/td&gt;&lt;/tr&gt;

标签: python django django-forms django-templates


【解决方案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"})

【讨论】:

    【解决方案2】:

    您遇到的问题可能是因为您没有为您的 EmailField() 分配任何 widget,更改为这个(就像@Todor 说的那样)应该可以工作:

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

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

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

    希望这会有所帮助。

    【讨论】:

    • 谢谢哥们!在我的css 中,“输入类型”是text,但我不应该为此使用email 类型,因为其他输入可能就像我刚刚删除了type 的电子邮件字段!
    猜你喜欢
    • 1970-01-01
    • 2015-01-13
    • 1970-01-01
    • 1970-01-01
    • 2020-03-09
    • 1970-01-01
    • 1970-01-01
    • 2017-10-14
    • 1970-01-01
    相关资源
    最近更新 更多