我试图渲染一个没有数据库模型的简单表单,但我收到错误。以下是代码:
from django import forms
from django.utils.safestring import mark_safe
class ContactForm(forms.Form):
category_options = (
('select category', '--Select Category--'),
('fire safety', 'Fire Safety'),
('batteries/solar panels', 'Batteries/Solar Panels'),
( 'cctv systems','CCTV Systems')
)
category = forms.ChoiceField(label="Select a Category", choices=category_options, required=True)
full_name = forms.CharField(required=False)
email = forms.EmailField()
phone = forms.CharField(widget=forms.IntegerField)
message = forms.CharField(widget=forms.Textarea(attrs={'cols': 10, 'rows': 10}))
def clean_email(self):
email = self.cleaned_data.get('email')
return email
我没有把电话领域弄好。我需要为电话号码添加验证,并且无法找出为IntegerField使用widget的正确方法。
我需要找到添加电话字段的准确方法。
我收到错误:
AttributeError at /contact/
'IntegerField' object has no attribute 'is_hidden'
当我使用
时,我得到以下结果phone = forms.CharField(widget=forms.NumberInput)
我从不同字段的python代码生成的html如下:
<p>
<label for="id_email">Email:</label>
<input id="id_email" name="email" type="email">
</p>
<p>
<label for="id_phone">Phone:</label>
<input id="id_phone" name="phone" type="number">
</p>
上面的两个字段都是用python代码生成的,但是email字段正在应用模板css。但是&#34;电话&#34;字段不呈现css。
请告知。
答案 0 :(得分:3)
forms.IntegerField
不是窗口小部件,而是窗体上的字段类型。
您需要的是forms.NumberInput
phone = forms.CharField(widget=forms.NumberInput)
答案 1 :(得分:0)
您可以使用
phone = forms.CharField(widget=forms.TextInput(
attrs={
'type' : 'number',
'class' : 'your_class'
}))