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

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

鼻涕虫 某物的缩写标签,只包含字母、数字、 下划线或连字符。它们通常用于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的帮助

其他回答

也可以在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)

它是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。

“段塞”是一种生成有效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。