2017-08-08 39 views
2

我是Django框架的新手,并且它的视图函数和它接受的参数有一些麻烦。 例如,请考虑下面的视图功能:Django如何理解视图函数中slug和id的区别?

def product-list(request, category_slug=None): 
categories = Category.objects.all() 
products = Product.objects.filter(not-finished=True) 
if category_slug: 
    category = get_object_or_404(Category, slug=category_slug) 
    products = products.filter(category=category) 

我的问题是:

  1. 如何Django的理解这是传递给这个函数是一个蛞蝓,而不是一个的ID category_slug?
  2. 如果该函数有3个参数,如def product-list(request, id, category_slug):它将如何知道第二个参数是id,最后一个是slug。

非常感谢。

回答

2

这不是在视图本身设置。传递的值在urls.py模块中定义,您可以在其中为视图设置路由。

Django不知道传递给视图的值是一个id还是一个slug,它也不会猜测或试图理解该值。您必须正确配置urls.py中的路由才能将正确的值发送到正确的视图。

+0

感谢您的帮助。 –

+0

但我仍然有一点问题。在上面的代码中,如果category_slug:工作如何? –

+0

如果category_slug是错误的,例如'None'或空字符串'''',那么if语句的主体将不会被输入。此变量用于按类别过滤产品列表视图。 – wim

相关问题