作爲Django的新手,我仍然在學習繩索我的問題不在於直接使用語法,而是最好的方法。如何正確處理KeyErrors
當網址中沒有值時,你將如何處理下面的內容。我收到一個錯誤。
cat_id = self.request.GET.get('cat_id', '')
return Product.objects.filter(category=cat_id)
作爲Django的新手,我仍然在學習繩索我的問題不在於直接使用語法,而是最好的方法。如何正確處理KeyErrors
當網址中沒有值時,你將如何處理下面的內容。我收到一個錯誤。
cat_id = self.request.GET.get('cat_id', '')
return Product.objects.filter(category=cat_id)
from django.shortcuts import get_object_or_404
cat_id = self.request.GET.get('cat_id', '')
# 404 if the category deosn't exist
category = get_object_or_404(Category, pk=cat_id)
# filter for products based on a known existing category
products = Product.objects.filter(category=category)
在其他情況下我可能會做這樣的事情
if 'cat_id' in self.request.GET:
cat_id = self.request.GET.get('cat_id')
# now do stuff with cat_id
使用0作爲默認值而不是空字符串。
但這時如果將值0,如果沒有值傳遞嘗試和過濾。如果沒有值傳遞,我想不過濾。 – jason 2013-02-17 19:36:19
然後,您應該使用if語句,因爲Francis已經顯示 – 2013-02-17 19:37:33
,但是然後Product.objects.filter(category = cat_id)會給出一個錯誤嗎? – jason 2013-02-17 19:40:47
如果發送了有效的類別標識,我們只想獲取產品。所以,首先我們嘗試使用GET中的id加載一個類別對象。過濾器可以基於id或on對象過濾,如果我們需要確保對象存在,我們可以加載它。 – 2013-02-17 19:40:47
也只是注意到,如果在過濾器中使用ID,假設cat_id是過濾器應該是Category類型的類別ID:'Product.objects.filter(category__pk = cat_id)' – 2013-02-17 19:41:44