从django 1.6中的POST表单获取信息
我有两个表单,一个是作为模型表单创建的,另一个是简单表单。它们都用于request.POST,为了从中获取信息,我使用了不同的方法: 对于ModelForm表单,我执行以下操作:从django 1.6中的POST表单获取信息,django,python-2.7,django-models,django-forms,Django,Python 2.7,Django Models,Django Forms,我有两个表单,一个是作为模型表单创建的,另一个是简单表单。它们都用于request.POST,为了从中获取信息,我使用了不同的方法: 对于ModelForm表单,我执行以下操作: form = ApplicantForm(request.POST) if form.is_valid(): applicant = form.save(commit=False) applicant.confirmation_code = '999999' applicant.save()
form = ApplicantForm(request.POST)
if form.is_valid():
applicant = form.save(commit=False)
applicant.confirmation_code = '999999'
applicant.save()
对于简单表单,我使用:
form = ConfirmationCode(request.POST)
code = request.POST['confirmation_code']
confirmation_id=request.POST['confirmation_id']
如您所见,要访问第一个表单中的信息,我使用的是“form.save.ANYFIELD”,而第二个表单中我使用的是“request.POST['ANYFIELD']”。即使没有保存,也可以使用request.POST方法访问第一个表单中的信息吗?哪一个更好?对于modelform,您可以这样尝试:
form = ApplicantForm(request.POST)
if form.is_valid():
app_code= form.cleaned_data['confirmation_code'] #assuming confirmation_code is a field in your modelform
.....
您似乎对模型表单中的保存操作有点困惑。当您调用
form.save()
时,您正在创建表单关联的模型的新实例,并且(除非您指定commit=False
)将数据保存到数据库中。因为您有一个实例,所以可以使用任何普通的模型实例方法和访问模式
如果要使用没有关联模型的表单,则不能调用
save
,因为没有要保存的内容,也没有要创建实例的模型,但应通过表单访问数据。在调用表单后,请清理数据
字典。是否有效()
。这是因为已清理的\u data
中的数据已根据表单中的规则进行验证,并在必要时转换为相关类型:例如,如果表单中有一个名为my\u number
的整数字段,请求。POST['my\u number']
将是类似“3”的字符串“
但是表单。清理后的数据['my\u number']
将是一个实际的整数,3
第二个示例中的表单什么都不做,而且完全没有意义,因为您直接访问POST数据-您可以不使用表单就这样做。现在您已经说过了,我可以注意到它是完全正确的!!!谢谢你指出。。。现在,如果我需要访问表单变量中的信息,我需要先保存它吗?是否可以保存一个简单的表单实例?(表单变量是一个表单简单表单实例,对吗?)?为什么这比使用form.save().confirmation_代码要好?访问数据不需要保存它。您可以通过调用表单来访问数据。已清理的\u数据['field\u name']
感谢您提供的清晰和详细的解释!!我真的需要它。