为什么没有变量? 我用代码写了
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中
我认为在这种情况下,程序会进入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:
。
我该如何解决这个问题?
答案 0 :(得分:2)
request.POST.get('access_key')
的返回值为''
,不是None
。
尝试检查elif not request.POST.get('foo')
,这将捕获两种情况,因为“和”都将评估为False
。
实际上,作为''
的所有三个值(None
,False
和value
)都将满足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'):