当我阅读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的描述部分,使其更人性化的描述,但不一定是web服务器所要求的——在Django中什么是“slug”?这个slug是'in-django-what-is-a-slug',但是这个slug并不用于决定服务的页面(至少在这个站点上)。
其他回答
请允许我提供一些历史背景:
术语“弹头”与铸造金属铅有关,在这种情况下,印刷字体是由金属铅制成的。然后,每张纸的字体工厂都会定期重新熔化并在新的模具中重新铸造,因为经过多次打印后,它们会磨损。像我这样的学徒在那里开始了他们的职业生涯,并一路走到顶峰(不再)。
Typographs had to compose the text of an article in a backward manner with lead characters stacked in a wise. So at printing time the letters would be straight on the paper. All typographs could read the newspaper mirrored as fast as the printed one. Therefore the slugs, (like snails) also the slow stories (the last to be fixed) were many on the bench waiting, solely identified by their fist letters, mostly the whole title generally more readable. Some "hot" news were waiting there on the bench, for possible last minute correction, (Evening paper) before last assembly and definitive printing.
姜戈走出了劳伦斯杂志在堪萨斯州的办公室。那里可能还有一些印刷术语。A-django-enthusiast -&-friendly-old-slug-boy-from-France。
也可以在django-admin中自动加载。在ModelAdmin添加:
prepopulated_fields = {'slug': ('title', )}
在这里:
class ArticleAdmin(admin.ModelAdmin):
list_display = ('title', 'slug')
search_fields = ('content', )
prepopulated_fields = {'slug': ('title', )}
“鼻涕虫”这个词来自报纸行业。
这是在制作过程中对故事的非正式称呼。随着故事从记者(假设这些还存在吗?)到编辑,再到“印刷机”,这就是它所引用的名字,例如,“你修复了‘凯特和威廉’故事中的那些错误吗?”
有些系统(如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的一部分,它以易于阅读的形式标识网站上的特定页面。
例如,/building-your- first -django-site。
弹头只包含:
字母:a-z, a-z 数字:0-9 下划线:_ 连字符:-
“段塞”是一种生成有效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。