這是因爲.get
拋出時,有沒有匹配的例外 - 它不返回東西falsey。
你有兩個選擇:
首先,你可以使用filter
和exists
代替get
,如果事情被發現,這將返回True
和False
否則。
如果你不以其他方式使用的結果,這可能是最好的解決辦法:
if Numbers.objects.filter(numbers_win = user_number).exists():
return HttpResponseRedirect('win')
else:
return HttpResponseRedirect('lose.html')
(正如在評論中指出,using exists
is faster if you're just checking for existence)
其次,你能捕獲異常而不是使用if
/else
:
try:
Numbers.objects.get(numbers_win = user_number)
except Numbers. DoesNotExist:
return HttpResponseRedirect('lose.html')
else:
return HttpResponseRedirect('win')
正如你所看到的,儘管如此,這會讓代碼有些尷尬,並且它也比使用.exists
差,所以你可能不應該這樣做。
'Numbers.object.get..'返回什麼?你確定它返回一個布爾值嗎? – Mel
也許這將有助於:http://stackoverflow.com/questions/3090302/in-django-how-do-i-objects-get-but-return-none-when-nothing-is-found所以,你將不得不用try來包圍它,除了if以外。 – allu