如果这些变量旨在填充表单,那么您可以安全地将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
或request.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字典不包含appVersion键,那么该字段将留空。只要该字段不是必需的,您的表单仍将进行验证,您可以在验证后在视图中修改form.appVersion
。
和GET请求可以使用url正则表达式自动验证 – Evgeny 2009-07-16 23:41:46
我还没有意识到这一点,谢谢! – sixthgear 2009-07-17 00:44:04