当我阅读Django代码时,我经常在模型中看到所谓的“slug”。我不太确定这是什么,但我知道它与url有关。这个鼻涕虫什么时候该怎么用?

(我已在本术语表中阅读了它的定义。)

鼻涕虫 某物的缩写标签,只包含字母、数字、 下划线或连字符。它们通常用于url中。例如, 在一个典型的博客入口URL中: https://www.djangoproject.com/weblog/2008/apr/12/spring/最后一位 (弹簧)是鼻涕虫。


从这里。

"鼻涕虫"是报纸上的术语,但是 这意味着这是最后一点 URL。例如,带有 标题,“一点关于Django” 成为“bit-about-django” 自动地(当然,你可以, 如果您不喜欢,可以轻松更改 自动生成的蛞蝓)。


它是URL的描述部分,使其更人性化的描述,但不一定是web服务器所要求的——在Django中什么是“slug”?这个slug是'in-django-what-is-a-slug',但是这个slug并不用于决定服务的页面(至少在这个站点上)。


“段塞”是一种生成有效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),我(至少)认为它是现代知识分子最伟大的作品之一。你也应该看看他的其他作品,《超魔法西马斯》。


请允许我提供一些历史背景:

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

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', )}

鼻涕虫是一个报纸术语。段语是一个简短的标签,只包含字母、数字、下划线或连字符。它们通常用于url中。(在Django文档中)

在Django中,slug字段用于为动态创建的网页存储和生成有效的url。

就像你在Stack Overflow上添加这个问题的方式一样,生成了一个动态页面,当你在地址栏中看到时,你会看到你的问题标题用“-”代替空格。这正是弹头场的工作。

你输入的标题是这样的——> Django中的“slug”是什么? 在将它存储到一个slug字段时,它就变成了“django中是什么-a-slug-in-django”(见本页URL)


Slug是针对特定内容的URL友好的短标签。它只包含字母,数字,下划线或连字符。鼻涕虫通常与各自的内容一起保存,并作为URL字符串传递。

Slug可以使用SlugField创建

Ex:

class Article(models.Model):
    title = models.CharField(max_length=100)
    slug = models.SlugField(max_length=100)

如果你想使用title作为slug, django有一个简单的函数叫做slugify

from django.template.defaultfilters import slugify

class Article(models.Model):
    title = models.CharField(max_length=100)

    def slug(self):
        return slugify(self.title)

如果需要唯一性,在slug字段中添加unique=True。

例如,在前面的例子中:

class Article(models.Model):
    title = models.CharField(max_length=100)
    slug = models.SlugField(max_length=100, unique=True)

你懒得做鼻涕虫过程吗?别担心,这个插件会帮你的。 django-autoslug


slug

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

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


简而言之,slug帮助摆脱那些丑陋的url与有效的url为例,在一个电子商务网站,而不是显示url为www.myecom.com/product/5432156,我可以显示它像www.myecom.com/product/iphone11与slug的帮助


这是一种生成有效URL的方法,通常使用已经获得的数据。例如,使用文章的标题生成URL。


段码是URL的一部分,它以易于阅读的形式标识网站上的特定页面。

例如,/building-your- first -django-site。

弹头只包含:

字母:a-z, a-z 数字:0-9 下划线:_ 连字符:-


Slug在Django中用于动态生成一个人类友好/可读的URL。例如,这个页面的当前URL是这样的: Django中的“slug”是什么?

注意URL是如何被实际的问题(在Django中什么是slug)所代替的