作为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