我通过request.POST接受数据,如下所示:
if request.method == 'POST':
l = Location()
data = l.getGeoPoints(request.POST)
appid = settings.GOOGLE_API_KEY
return render_to_response('map.html',
{'data': data, 'appid': appid},
context_instance=RequestContext(request))
它接受来自一堆名为 form-0-location 的文本输入框的数据,一直到 form-5-location 。
我想要添加的是检查以确保request.POST包含任何这些输入字段中的数据。我认为我的问题是我不知道在Django中描述这个的正确术语。
我知道如何在PHP中执行此操作:查看$ _POST内部至少其中一个字段不为空,但我似乎无法通过搜索谷歌找到正确的答案。
如果我在这些输入字段中找不到任何数据,我想将用户重定向回主页面。
答案 0 :(得分:8)
您是否考虑过使用Django's Forms?您可以在定义表单时将字段标记为“必需”,Django将在提交时验证所述字段是否包含数据。他们还进行其他类型的验证。
答案 1 :(得分:4)
if request.method == 'POST' and request.POST:
# Process request
如果请求不包含任何数据,request.POST将为false。
答案 2 :(得分:3)
使用Django请求对象时,POST数据就像字典一样存储,因此如果您知道字典中的键,则可以搜索它们并检查它们是否为空。查看这两个链接以获取更多详细信息:
http://docs.djangoproject.com/en/dev/ref/request-response/#attributes http://docs.djangoproject.com/en/dev/ref/request-response/#querydict-objects
例如,当你有了你的请求对象,并且你知道你有一个名为'form-0-location'的密钥/ var时,你可以这样做:
if request.POST.get('form-0-location'):
print 'field is not None >> %s' % request.POST.get('form-0-location'')
答案 3 :(得分:0)
我接下来建议使用Django Forms。当你使用Django时,为什么不利用Django Forms?
设计一个与您当前在页面上的字段相匹配的快速表单。使用request.POST
数据加载表单,然后使用form.is_valid()
确定表单是否有效。
答案 4 :(得分:0)
request.POST
返回一种QueryDict(扩展了Dictionary超类)。
这意味着您可以遍历此字典中的键(POST中的所有参数),并在看到空字符时返回false
(对于request.POST
中的键):
if key k has invalid value (i.e. None or something else):
return false
return true
答案 5 :(得分:0)
你也可以试试像
这样的东西if len(request.POST['data'])<1:
do something if empty
else:
do something if has data