1. 程式人生 > 程式設計 >django ObjectDoesNotExist 和 DoesNotExist的用法

django ObjectDoesNotExist 和 DoesNotExist的用法

舉例吧,這樣更容易看的懂。

例1:

from django.core.exceptions import ObjectDoesNotExist
try:
  pe = Plant.objects.get(id=12873)
except ObjectDoesNotExist:
  print "uuuu"
uuuu
# 我隨意找了一個id=12873的物件來查詢,當然,資料庫裡沒有這個id,可以看到結果正常的打印出來

例2:

try:
  pe = Plant.objects.get(id=12873)
except Plant.DoesNotExist:
  print "rrr"
rrr
# 結果也如期列印,那麼來看看model的屬性
dir(Plant) 
['DoesNotExist','MultipleObjectsReturned','__class__','__delattr__','__dict__','__doc__',......
# DoesNotExist正在其中

總結:ObjectDoesNotExist 和 DoesNotExist 表達的意思是相同的,只是寫法不同,一個需要匯入,一個是model的屬性,如何使用看大家的個人習慣就好。

補充知識:Django入門:DoesNotExist: User matching query does not exist.

先說說引發該問題的具體程式碼

User.objects.filter(username='sss').get().username

當在py指令碼中使用以上程式碼進行username是否等於“sss”判斷時,如果搜尋username的值等於“sss”時,其返回正確的結果,但如果搜尋中不存在“sss”時,會返回如標題的錯誤(DoesNotExist: User matching query does not exist.),程式終止執行。終止執行意味著後面的程式碼不再被執行,故而得不到自己想要的結果。

由此問題可以延伸到:遇到同類問題可以怎麼解決:

可以使用try…except…語句將可能會導致程式終止的語句包涵其中,具體寫法如下:

try:
 User.objects.filter(username=username).get().username
except:
 pass

附:try…except…語句是一個用來異常處理用法,即:當所有可能會導致程式異常點都可以使用try…except…載入程式

以上這篇django ObjectDoesNotExist 和 DoesNotExist的用法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。