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

and*_*dyw 2 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))
Run Code Online (Sandbox Code Playgroud)

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

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

我很感激指针。带着最美好的祝愿,安迪。

Ala*_*air 6

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

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

print(request.POST.getlist('collected_already') or None)
Run Code Online (Sandbox Code Playgroud)

这是因为 Python 计算布尔表达式的方式。如果xy都计算为 False,则x or y返回y