当我阅读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中。(在Django文档中)
在Django中,slug字段用于为动态创建的网页存储和生成有效的url。
就像你在Stack Overflow上添加这个问题的方式一样,生成了一个动态页面,当你在地址栏中看到时,你会看到你的问题标题用“-”代替空格。这正是弹头场的工作。
你输入的标题是这样的——> Django中的“slug”是什么? 在将它存储到一个slug字段时,它就变成了“django中是什么-a-slug-in-django”(见本页URL)
其他回答
Slug在Django中用于动态生成一个人类友好/可读的URL。例如,这个页面的当前URL是这样的: Django中的“slug”是什么?
注意URL是如何被实际的问题(在Django中什么是slug)所代替的
slug
某物的短标签,只包含字母、数字、下划线或连字符。它们通常用于url中。例如,在一个典型的博客条目URL中:
https://www.djangoproject.com/weblog/2008/apr/12/spring/ 最后一点(弹簧)是弹簧。
它是URL的描述部分,使其更人性化的描述,但不一定是web服务器所要求的——在Django中什么是“slug”?这个slug是'in-django-what-is-a-slug',但是这个slug并不用于决定服务的页面(至少在这个站点上)。
“鼻涕虫”这个词来自报纸行业。
这是在制作过程中对故事的非正式称呼。随着故事从记者(假设这些还存在吗?)到编辑,再到“印刷机”,这就是它所引用的名字,例如,“你修复了‘凯特和威廉’故事中的那些错误吗?”
有些系统(如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),我(至少)认为它是现代知识分子最伟大的作品之一。你也应该看看他的其他作品,《超魔法西马斯》。
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