检查Django request.POST中的内容

时间:2009-11-17 03:20:45

标签: django forms data-processing

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

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

6 个答案:

答案 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