django ObjectDoesNotExist 和 DoesNotExist的用法
舉例吧,這樣更容易看的懂。
例1:
from django.core.exceptions import ObjectDoesNotExisttry: pe = Plant.objects.get(id=12873)except ObjectDoesNotExist: print 'uuuu'uuuu# 我隨意找了一個(gè)id=12873的對(duì)象來(lái)查詢,當(dāng)然,數(shù)據(jù)庫(kù)里沒(méi)有這個(gè)id,可以看到結(jié)果正常的打印出來(lái)
例2:
try: pe = Plant.objects.get(id=12873)except Plant.DoesNotExist: print 'rrr'rrr# 結(jié)果也如期打印,那么來(lái)看看model的屬性dir(Plant) [’DoesNotExist’, ’MultipleObjectsReturned’, ’__class__’, ’__delattr__’, ’__dict__’, ’__doc__’, ......# DoesNotExist正在其中
總結(jié):ObjectDoesNotExist 和 DoesNotExist 表達(dá)的意思是相同的,只是寫(xiě)法不同,一個(gè)需要導(dǎo)入,一個(gè)是model的屬性,如何使用看大家的個(gè)人習(xí)慣就好。
補(bǔ)充知識(shí):Django入門(mén):DoesNotExist: User matching query does not exist.
先說(shuō)說(shuō)引發(fā)該問(wèn)題的具體代碼
User.objects.filter(username=’sss’).get().username
當(dāng)在py腳本中使用以上代碼進(jìn)行username是否等于“sss”判斷時(shí),如果搜索username的值等于“sss”時(shí),其返回正確的結(jié)果,但如果搜索中不存在“sss”時(shí),會(huì)返回如標(biāo)題的錯(cuò)誤(DoesNotExist: User matching query does not exist.),程序終止運(yùn)行。終止運(yùn)行意味著后面的代碼不再被執(zhí)行,故而得不到自己想要的結(jié)果。
由此問(wèn)題可以延伸到:遇到同類問(wèn)題可以怎么解決:
可以使用try…except…語(yǔ)句將可能會(huì)導(dǎo)致程序終止的語(yǔ)句包涵其中,具體寫(xiě)法如下:
try: User.objects.filter(username=username).get().usernameexcept: pass
附:try…except…語(yǔ)句是一個(gè)用來(lái)異常處理用法,即:當(dāng)所有可能會(huì)導(dǎo)致程序異常點(diǎn)都可以使用try…except…引導(dǎo)程序
以上這篇django ObjectDoesNotExist 和 DoesNotExist的用法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. XML入門(mén)的常見(jiàn)問(wèn)題(一)2. CSS3中Transition屬性詳解以及示例分享3. 通過(guò)CSS數(shù)學(xué)函數(shù)實(shí)現(xiàn)動(dòng)畫(huà)特效4. 低版本IE正常運(yùn)行HTML5+CSS3網(wǎng)站的3種解決方案5. 利用CSS3新特性創(chuàng)建透明邊框三角6. 阿里前端開(kāi)發(fā)中的規(guī)范要求7. CSS3實(shí)例分享之多重背景的實(shí)現(xiàn)(Multiple backgrounds)8. IE6/IE7/IE8/IE9中tbody的innerHTML不能賦值的完美解決方案9. 解析原生JS getComputedStyle10. XML入門(mén)的常見(jiàn)問(wèn)題(二)
