django get_object_or_404 是django shortcuts模塊里面一個比較簡便的方法,特別是用django get來操作數據庫的時候,可以幫 我們少寫一些代碼,加快開發速度。
get_object_or_404的介紹: 我們原來調用django 的get方法(model.object.get()),如果查詢的對象不存在的話,會拋出一個DoesNotExist的異常, 現在我們調用django get_object_or_404方法,它會默認的調用django 的get方法, 如果查詢的對象不存在的話,會拋出一個Http404的異常,我感覺這樣對用戶比較友好, 如果用戶查詢某個產品不存在的話,我們就顯示404的頁面給用戶,比直接顯示異常好。
get_object_or_404一般需要3個參數:
1. modelname:一個model,manage,或query對象。
2. *args
3. **kwargs 而后面的*args,**kwargs則是查詢的時候用到的參數。
下面用個例子看來下:
from django.shortcuts import get_object_or_404
product = get_object_or_404(Product, pk=1)
Product是要查詢的model,后面的pk=1是查詢條件,你可以根據你需要查詢的情況來寫條件。 上面的例子也可以寫成下面這樣的形式:
from django.http import Http404 try: product = Product.objects.get(pk=1) except MyModel.DoesNotExist: raise Http404
看來用django get_object_or_404方法可以省下你很多操作,有興趣可以看看django.shortcuts 模塊包里面的其他的方法, 會讓你能夠在提高編程的效率。
#####################
用model.object.get()方法查詢對象,如果對象不存在的話,會拋出一個DoesNotExist的異常,這樣將會使模型層與視圖層耦合在一起
Django最重要的一個設計目標就是保持松耦合。 用get_object_or_404可以使模型層和視圖層低耦合。
一些可控的耦合將會在django.shortcuts 模塊中介紹。