我想使用 URL 模式从我的产品列表中获取产品 View 。但我遇到了两种方法,并且对选择哪种有点困惑。
1) <slug>
2) <int:id>
最佳答案
这是documentation对于 url 模式。您要比较的两种模式非常不同:
-
<slug>
也可能只是<something>
。它只是您要捕获的变量的名称,因为您没有包含路径转换器。默认情况下,这可以是任何字符串(不包括路径分隔符'/'
)。 -
<int:id>
指定两件事:路径转换器 (int
) 和要捕获的变量名称 (id
)。在这种情况下,只有该部分为整数的 URL 才会匹配该模式。id
永远是一个整数。
如果您阅读文档,您会发现您还可以使用 slug
路径转换器,例如<slug:slug>
所以这将匹配字符串的子集(ASCII、数字、连字符和下划线)并调用捕获的变量 slug
.
捕获的变量将传递到您的 View 。所以如果你想通过在url中传递产品id来制作产品详细信息 View ,你应该使用 <int:id>
在您看来变量 id
可用于获取相应的产品。但是,如果您的产品型号有 slug 字段,并且您更喜欢使用它(产品名称的 slugified 版本,例如“sweater-men-with-front-logo”),则使用 <slug:slug>
。
关于python - 在 url-patterns(Django) 中使用 '/<int:id>' 而不是 '/<slug>' 时有什么区别?哪种方法更可取?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57993808/