2017-11-20 6 views
-1

なぜ変数が変数に入れられないのですか?私はなぜ変数が変数に入れられないのですか?

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>') 

のようなコードに書いた は今、私はこのケースでは、プログラムがelif request.POST.get('access_key', None) == None:に入ると思うが、今ではelse:に入る enter image description here

ようPOSTMANにACCESS_KEYために何かを置きます。

null値がNoneとして認識されない理由を私は本当に理解できません。私はprint(type(request.POST.get('access_key')))と書いてあり、白紙が印刷されています。

値を入力しない場合はシステムを作りたい、プログラムはelif request.POST.get('access_key', None) == None:にする必要があります。

これはどのように修正する必要がありますか?

+0

を試してみてください

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

、あなたは 'is'か'かどうかをチェックするには、 'not'あるを使用する必要があります'=='/'!='ではなく 'None'である。 'xがNoneの場合'または 'xがNoneでない場合' – DeepSpace

+1

'print(None)'は空白を表示しません。 Ergo、値は 'None'と等しくありません。 'elif not request.POST.get( 'access_key'):'を使用してください。 –

答えて

2

request.POST.get('access_key')の戻り値は''であり、Noneではありません。

elif not request.POST.get('foo')を確認してください。どちらの場合も、 ``とNoneは両方ともFalseと評価されます。 実際には、valueという3つの値('',None、およびFalse)は、ifの条件if not value:を満たします。

はこのwikiページを見ている:ほとんどのプログラミング言語でhttps://en.wikipedia.org/wiki/Empty_string

をnull参照がまったく任意の文字列を指していないので、空の文字列がnull参照(またはnullポインタ)とは区別されますPythonのための

、より正確:https://docs.python.org/2/library/constants.html

types.NoneTypeの唯一の値。 Noneは、デフォルトの引数が関数に渡されない場合のように、値が存在しないことを表すために頻繁に使用されます。

+1

しかし、 '' 'と '' None''が 'if'条件(' bool'に渡されるとき)で 'False'と評価されることに注意することが重要です。https://stackoverflow.com/a/39984051/1453822 – DeepSpace

+1

'.get()'の2番目の引数のデフォルト値はすでに 'None'です。 'elifは要求しません.POST.get( 'foo'):'十分です。 –

1

あなたrequest.POST.get('access_key')''

等しいので、代わりのも簡単な

elif not request.POST.get('access_key'): 
関連する問題