Django Web表单验证

时间:2014-10-11 17:06:27

标签: python django forms web

我从未对网络内容进行过多处理,这种情况即将变得明显。 我正在尝试将一个年龄验证器添加到我正在构建的网站 - 简单的东西,一个带有是或否的下拉框。
我想出最简单的方法是通过Http GET传递表单值并通过视图验证它。
 GET只传递我表单中输入的“名称”,例如:

 <form action="/validate/" method="get">            
 <select name="validatorBox">
 <option name="yes" value="yes">
 <option name="no" value="no">
 </select>
 <input type="submit" value="I am 21 years of age or older">

正在传递名称“validatorBox”,而不是选项的名称。所有其他表单输入类型都是一样的,永远不会只是名称 那么我忽略了哪个简单的事情,或者有更好的方法来做这件事?

视图看起来与此类似:

def search(request):
if 'yes' in request.GET:
    return render(request, 'main.html')
else:
    return render(request, 'validate.html')

1 个答案:

答案 0 :(得分:2)

select元素如何工作:它提交单个值,这是所选子选项的值,与select本身的名称相对应。选项元素实际上没有名称属性。

另一个问题是request.GET是字典,'foo' in dict总是检查,而不是值。您需要实际检查与正确密钥关联的值:

if request.GET.get('validatorBox') == 'yes':

最后,您可能想要查看Django's forms framework,而不是手动执行所有操作。