Django 中的“slug”是什么?

新手上路,请多包涵

当我阅读 Django 代码时,我经常在模型中看到所谓的“slug”。我不太确定这是什么,但我知道它与 URL 有关。应该如何以及何时使用这个 slug-thing?

(我已阅读 本词汇表 中的定义。)

鼻涕虫

某物的简短标签,仅包含字母、数字、下划线或连字符。它们通常用于 URL。例如,在典型的博客条目 URL 中:

https://www.djangoproject.com/weblog/2008/apr/12/spring/ 最后一点(弹簧)是 slug。

原文由 Jonas 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 907
2 个回答

“slug”是一种生成有效 URL 的方法,通常使用已经获得的数据。例如,一个 slug 使用一篇文章的标题来生成一个 URL。我建议通过给定标题(或另一条数据)的函数生成 slug,而不是手动设置它。

一个例子:

 <title> The 46 Year Old Virgin </title>
<content> A silly comedy movie </content>
<slug> the-46-year-old-virgin </slug>

现在假设我们有一个 Django 模型,例如:

 class Article(models.Model):
    title = models.CharField(max_length=100)
    content = models.TextField(max_length=1000)
    slug = models.SlugField(max_length=40)

您将如何使用 URL 和有意义的名称来引用此对象?例如,您可以使用 Article.id 使 URL 看起来像这样:

 www.example.com/article/23

或者,您可能想像这样引用标题:

 www.example.com/article/The 46 Year Old Virgin

由于空格在 URL 中无效,因此必须将它们替换为 %20 ,这将导致:

 www.example.com/article/The%2046%20Year%20Old%20Virgin

这两种尝试都没有产生非常有意义、易于阅读的 URL。这个更好:

 www.example.com/article/the-46-year-old-virgin

在此示例中, the-46-year-old-virgin 是一个 slug:它是通过将所有字母小写并用连字符替换空格 - 从标题创建的。

另请参阅此网页的 URL 以获取另一个示例。

原文由 Josh Smeaton 发布,翻译遵循 CC BY-SA 4.0 许可协议

如果我可以提供一些历史背景:

“金属块” 一词与铸造金属有关——在这种情况下是铅——印刷字体就是用这种金属制成的。然后,每张纸的字体都会定期在新模具中重新熔化和重铸,因为在印刷多次后它们会磨损。像我这样的学徒在那里开始了他们的职业生涯,并一路走到了顶峰(现在不是了)。

排版者必须以一种向后的方式撰写一篇文章的文本,其中的主要字符以一种明智的方式堆叠。所以在打印时,字母会直接打印在纸上。所有印刷字体都可以像印刷报纸一样快速地阅读镜像报纸。因此,鼻涕虫(像蜗牛一样)和慢故事(最后被修复的故事)很多都在长凳上等待,仅通过他们的拳头字母来识别,大多数情况下整个标题通常更具可读性。一些“热门”新闻在板凳上等待,可能在最后一分钟更正,(晚报)在最后组装和最终印刷之前。

姜戈出现在堪萨斯州劳伦斯杂志的办公室。可能一些印刷术语仍然存在。 来自法国的 Django 爱好者和友善的老鼻涕虫男孩。

原文由 MikkaH Savva 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题