python - 在 url-patterns(Django) 中使用 '/<int:id>' 而不是 '/<slug>' 时有什么区别?哪种方法更可取?

标签 python django url

我想使用 URL 模式从我的产品列表中获取产品 View 。但我遇到了两种方法,并且对选择哪种有点困惑。 1) <slug> 2) <int:id>

最佳答案

这是documentation对于 url 模式。您要比较的两种模式非常不同:

  1. <slug>也可能只是 <something> 。它只是您要捕获的变量的名称,因为您没有包含路径转换器。默认情况下,这可以是任何字符串(不包括路径分隔符 '/' )。
  2. <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/

相关文章:

python - 检查目录下是否有.format文件

django - 我的请求是跨源请求吗?(heroku 上的 Django Rest api,CORS 不会阻止我的请求)

python - 使用字典作为映射器创建 pandas 系列

python - Django:实现嵌套的、可重用的组件设计

Django 干草堆 : Boosting search results if the searchterm appears in a specific field

html - Twitter URL 中的 (#!) 有什么作用?

regex - Perl 正则表达式匹配字符串中的 URI

php - 通过 .htaccess 进行 URL 重写

python - 如何自动将python类中的 "register"方法作为列表类变量?

python - 从 Music21 保存图像文件