2014-09-04 85 views
0

对不起,首先是愚蠢的问题。python/django - [u'']不为空

我越来越像同类型的用户输入列表:

<input name="booknames" type="text"> 
<input name="booknames" type="text"> 
<input name="booknames" type="text"> 

和viws:

if request.POST.getlist('booknames'): 
    print 'yes' 
else: 
    print 'no' 

即使没有用户输入那里,我得到yes。我打印了名单,我得到了空的[u'']

我错过了什么?

回答

7

[u'']不为空。这是一个包含一个元素的列表,即空字符串。如果列表中有任何元素,则该列表会在布尔上下文中被视为True。如果您想查看您的列表是否包含任何非空元素,请尝试any(request.POST.getlist('booknames'))

+0

哇,太棒了!不知道。谢谢吨 – doniyor 2014-09-04 19:10:21

+0

你知道如何在django模板中的任何''? – doniyor 2014-09-04 19:11:47

+1

我不认为有内置的方法可以做到这一点,但编写一个'|任何'自定义过滤器可以很容易地在'{%if ..%}'表达式中使用。 – 2014-09-04 19:16:54