我从未对网络内容进行过多处理,这种情况即将变得明显。
我正在尝试将一个年龄验证器添加到我正在构建的网站 - 简单的东西,一个带有是或否的下拉框。
我想出最简单的方法是通过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')
答案 0 :(得分:2)
select
元素如何工作:它提交单个值,这是所选子选项的值,与select本身的名称相对应。选项元素实际上没有名称属性。
另一个问题是request.GET
是字典,'foo' in dict
总是检查键,而不是值。您需要实际检查与正确密钥关联的值:
if request.GET.get('validatorBox') == 'yes':
最后,您可能想要查看Django's forms framework,而不是手动执行所有操作。