当我阅读Django代码时,我经常在模型中看到所谓的“slug”。我不太确定这是什么,但我知道它与url有关。这个鼻涕虫什么时候该怎么用?
(我已在本术语表中阅读了它的定义。)
鼻涕虫 某物的缩写标签,只包含字母、数字、 下划线或连字符。它们通常用于url中。例如, 在一个典型的博客入口URL中: https://www.djangoproject.com/weblog/2008/apr/12/spring/最后一位 (弹簧)是鼻涕虫。
当我阅读Django代码时,我经常在模型中看到所谓的“slug”。我不太确定这是什么,但我知道它与url有关。这个鼻涕虫什么时候该怎么用?
(我已在本术语表中阅读了它的定义。)
鼻涕虫 某物的缩写标签,只包含字母、数字、 下划线或连字符。它们通常用于url中。例如, 在一个典型的博客入口URL中: https://www.djangoproject.com/weblog/2008/apr/12/spring/最后一位 (弹簧)是鼻涕虫。
当前回答
这是一种生成有效URL的方法,通常使用已经获得的数据。例如,使用文章的标题生成URL。
其他回答
也可以在django-admin中自动加载。在ModelAdmin添加:
prepopulated_fields = {'slug': ('title', )}
在这里:
class ArticleAdmin(admin.ModelAdmin):
list_display = ('title', 'slug')
search_fields = ('content', )
prepopulated_fields = {'slug': ('title', )}
“段塞”是一种生成有效URL的方式,通常使用已经获得的数据。例如,slug使用文章的标题生成URL。我建议通过给定标题(或另一段数据)的函数来生成这个段代码,而不是手动设置。
一个例子:
<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- old-virgin是一个slug:它是由标题中所有字母的下装,空格用连字符-取代而来。
另一个例子也可以看到这个网页的URL。
“鼻涕虫”这个词来自报纸行业。
这是在制作过程中对故事的非正式称呼。随着故事从记者(假设这些还存在吗?)到编辑,再到“印刷机”,这就是它所引用的名字,例如,“你修复了‘凯特和威廉’故事中的那些错误吗?”
有些系统(如Django)使用slug作为URL的一部分来定位故事,例如www.mysite.com/archives/kate-and-william。
甚至Stack Overflow本身也会这样做,使用GEB-ish(a)自引用https://stackoverflow.com/questions/427102/what-is-a-slug-in-django/427201#427201,尽管你可以用blahblah替换slug,它仍然会发现它是可以的。
它甚至可以追溯到更早的时候,因为剧本在每个场景的开始都有“弹头线”,这基本上是为该场景设置背景(何时何地等)。它的相似之处在于它是后面内容的序言。
在Linotype机器上,slug是由单个字母形成的单线金属片。通过为整行制作一个分段,这大大改进了旧的逐字符合成。
虽然以下是纯粹的猜测,但slug的早期含义是指伪造的硬币(必须以某种方式压制)。我可以想象这种用法被转化为印刷术语(因为弹头必须使用原始角色来按压),然后从“金属块”的定义转变为“故事摘要”的定义。从那时起,从正规印刷到网络世界只差一小步。
(一)道格拉斯·霍夫施塔特(Douglas Hofstadter)的《哥德尔·埃舍尔,巴赫》(Godel Escher, Bach),我(至少)认为它是现代知识分子最伟大的作品之一。你也应该看看他的其他作品,《超魔法西马斯》。
从这里。
"鼻涕虫"是报纸上的术语,但是 这意味着这是最后一点 URL。例如,带有 标题,“一点关于Django” 成为“bit-about-django” 自动地(当然,你可以, 如果您不喜欢,可以轻松更改 自动生成的蛞蝓)。
简而言之,slug帮助摆脱那些丑陋的url与有效的url为例,在一个电子商务网站,而不是显示url为www.myecom.com/product/5432156,我可以显示它像www.myecom.com/product/iphone11与slug的帮助