为什么没有变量?

时间:2017-11-20 08:44:54

标签: python django

为什么没有变量? 我用代码写了

def check(request):
    if len(request.POST.get('access_key')) >= 25:
        return HttpResponse('<h1>Hello</h1>')
    elif request.POST.get('access_key', None) == None:
        id_json = {}
        return JsonResponse(id_json, safe=False)
    else:
        return HttpResponse('<h1>Good</h1>')

现在我把任何东西都放在POSTMAN中的access_key中 enter image description here

我认为在这种情况下,程序会进入elif request.POST.get('access_key', None) == None:,但现在进入else:

我真的无法理解为什么空值不被识别为None。我写了print(type(request.POST.get('access_key')))并打印出空白。

如果没有放入任何值,我想建立一个系统,程序应该进入elif request.POST.get('access_key', None) == None:

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

request.POST.get('access_key')的返回值为'',不是None

尝试检查elif not request.POST.get('foo'),这将捕获两种情况,因为“和”都将评估为False。 实际上,作为''的所有三个值(NoneFalsevalue)都将满足if条件if not value:

查看此Wiki页面:https://en.wikipedia.org/wiki/Empty_string

  

在大多数编程语言中,空字符串与空引用(或空指针)不同,因为空引用根本不指向任何字符串。

更确切地说是Python:https://docs.python.org/2/library/constants.html

  

types.NoneType的唯一价值。 None经常用于表示缺少值,因为默认参数未传递给函数。

答案 1 :(得分:1)

您的request.POST.get('access_key')等于''

所以而不是

elif request.POST.get('access_key', None) == None:

尝试简单

elif not request.POST.get('access_key'):