django request.POST.getlist [my_list',None]为非存在键返回[]

时间:2016-10-25 10:34:34

标签: django list request

我正在使用Django 1.10.2。

在视图中,下面返回[]

    print(request.POST.getlist('collected_already', None))
    print(request.POST.getlist('collected_already[]', None))
    print(request.POST.getlist('non_existent', None))
    print(request.POST.getlist('non_existent[]', None))

我希望为non_existent键返回None,并在发送空列表时返回[]。

我的解决方法是发送和检测['空白']而不是[]。

我很欣赏指针。最诚挚的祝福,安迪。

2 个答案:

答案 0 :(得分:2)

getlist默认返回空列表[]。如果您通过default=None,则会将其视为“未指定默认值”,而不是默认为“无”。

如果您想将空列表[]强制转换为None,则只需将or None添加到表达式的末尾即可。

print(request.POST.getlist('collected_already') or None)

这是因为Python评估boolean expressions的方式。如果xy评估为False,则x or y会返回y

答案 1 :(得分:0)

我认为getlist()将默认参数设为None,如果找不到key,则返回空list []。

Check this

  

以Python列表的形式返回带有请求键的数据。如果密钥不存在且未提供默认值,则返回空列表。除非提供的默认值不是列表,否则保证返回某种列表。