如果这些变量旨在填充表单,那么您可以安全地将request.POST
对象直接传递给表单构造函数。
if request.method == 'POST':
form = MyForm(request.POST)
表单将自动将正确的值传递给正确的表单字段,并对不存在的键使用默认值,并且仍会为缺少的键创建空白字段(请参阅附录)。
如果您正在尝试处理表单,最好还是像上面那样创建一个表单对象,然后从该对象中读出值。
if request.method == 'POST':
form = MyForm(request.POST)
if form.is_valid():
# You may process these variables here
print form.appVersion
print form.appName
print form.appCodeName
请记住,验证代码最好也放在表单类中。这样,如果form.is_valid()
返回True
,那么您知道您有一个干净的数据集可以使用。
注意:Django 文档建议使用request.POST
orrequest.GET
直接而不是合并变量request.REQUEST
,因为它更明确。
附录:
在这种情况下,了解绑定表单和未绑定表单之间的区别很重要。如果你用 来创建一个未绑定的表单form = MyForm()
,那么当表单被实例化时,它将使用initial
每个字段的属性(如果存在)填充所有字段。例如,使用以下代码:
from django import forms
class MyForm(forms.Form):
appVersion = forms.CharField(initial='1.0')
appName = forms.CharField()
appCodeName = forms.CharField()
表单将使用值为“1.0”的 appVersion 进行初始化。但是,如果您将 POST 请求绑定到这样的表单:form = MyForm(request.POST)
,则初始属性将被忽略。这意味着如果 POST dict 不包含 appVersion 键,则该字段将留空。只要该字段不是必需的,您的表单仍然会验证,验证form.appVersion
后您可以在视图中进行修改。