Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从django 1.6中的POST表单获取信息_Django_Python 2.7_Django Models_Django Forms - Fatal编程技术网

从django 1.6中的POST表单获取信息

从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()

我有两个表单,一个是作为模型表单创建的,另一个是简单表单。它们都用于request.POST,为了从中获取信息,我使用了不同的方法:

对于ModelForm表单,我执行以下操作:

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']
感谢您提供的清晰和详细的解释!!我真的需要它。