2

我通过 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 中查看至少其中一个字段不为空,但我似乎无法通过搜索谷歌找到正确的答案。

如果我在这些输入字段中找不到任何数据,我想将用户重定向回主页。

4

6 回答 6

10

您是否考虑过使用Django 的表单?您可以在定义表单时将字段标记为“必填”,Django 将在提交时负责验证所述字段中是否包含数据。他们还进行其他类型的验证。

于 2009-11-17T03:26:47.840 回答
6
if request.method == 'POST' and request.POST:
       # Process request

如果请求不包含任何数据,request.POST 将为 false。

于 2009-11-17T13:49:15.603 回答
4

使用 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”的键/变量,您可以这样做:

if request.POST.get('form-0-location'):
    print 'field is not None >> %s' % request.POST.get('form-0-location'')
于 2009-11-17T03:24:58.547 回答
0

我赞同使用 Django Forms 的建议。在使用 Django 时,为什么不利用 Django Forms?

设计一个与您当前在页面上的字段匹配的快速表单。request.POST用数据加载表单,并用于form.is_valid()确定表单是否有效。

于 2009-11-17T13:19:53.120 回答
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
于 2012-10-01T20:45:22.420 回答
0

您也可以尝试尝试类似

if len(request.POST['data'])<1:
    do something if empty
else:
    do something if has data
于 2014-06-03T03:07:47.330 回答