【问题标题】:How does Django understand the difference between slug and id in view functions?Django 如何理解视图函数中 slug 和 id 的区别?
【发布时间】:2018-01-16 10:57:28
【问题描述】:

我是 Django 框架的新手,在它的视图函数和它接受的参数方面遇到了一些问题。 例如,考虑以下视图函数:

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 如何理解传递给此函数的 category_slug 是 slug 而不是 id?
  2. 如果函数有 3 个参数,例如 def product-list(request, id, category_slug):,它如何知道第二个参数是 id 而最后一个是 slug。

非常感谢。

【问题讨论】:

    标签: django slug


    【解决方案1】:

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

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

    【讨论】:

    • 感谢您的帮助。
    • 但是我还有点小问题。在上面的代码中,if category_slug: 是如何工作的?
    • 如果 category_slug 为 false,例如 None 或空字符串 '',则不会输入 if 语句的主体。此变量用于按类别过滤产品列表视图。
    • 非常感谢。这真的很有帮助。
    猜你喜欢
    • 2016-07-05
    • 2019-08-11
    • 2020-11-26
    • 2019-03-11
    • 2015-04-20
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 2015-11-28
    相关资源
    最近更新 更多