在Django中我们可以通过封装model来获得form,也可以单独定义一个form,然后在view中对提交过来的数据进行处理。
一般来说通过model封装来的form是这样进行定义的:
class <modelname>Form(forms.ModelForm):
class meta:
model = modelname
field = ['attrr1','attrr2']
单独定义的form则继承forms.Form
class <name>Form(forms.Form):
name1 = forms.CharField(label=u' 验证码',
widget=forms.TextInput(attrs={'class':'form-control', 'id':'check_code','placeholder':u'输入验证码'}))
这种定义可以方便在网页进行标签化显示内容,在此基础上还可以通过定义clean函数,来进行简单的数据验证。
在view函数中获得form表单提交的数据也很简单:
当验证表单form.is_valid为真时,通过form.cleaned_data['name1']来获得数据。注意这里的字典内引用值为name1也就是定义的表单中的属性名称,这是因为在定义表单变量时
并没有指定其显示时候的name属性,当提交时,系统会自动为其添加name属性,而name属性的值就是定义的变量名:可以观察提交的form表:
观察到增加了name属性。
我验证了在属性定义时指定name值,但是发现name值还是会被改为属性变量值。