当我阅读Django代码时,我经常在模型中看到所谓的“slug”。我不太确定这是什么,但我知道它与URL有关。怎么以及什么时候应该使用这个slug-thing?
(我已经在this glossary中阅读了它的定义。)
答案 0 :(得分:631)
这是一种生成有效URL的方法,通常使用已经获得的数据。例如,使用文章标题生成URL。我建议使用函数生成slug,给出标题(或其他数据),而不是手动设置。
一个例子:
<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
问题是,空格在网址中无效,需要用丑陋的%20
替换,如下所示:
www.example.com/article/The%2046%20Year%20Old%20Virgin
这不是解决我们有意义的网址。这不会更好:
www.example.com/article/the-46-year-old-virgin
那是一个slu .. the-46-year-old-virgin
。所有字母都是向下的,空格由连字符-
替换。有关示例,请参阅此网页的网址!
答案 1 :(得分:109)
如果我可以提供一些历史背景:
术语“slug”与铸造金属铅有关,在这种情况下,制造印刷机字体。然后每张纸都经常将其字体工厂重新熔化并在新模具中重铸,因为经过多次印刷后,它们变得陈旧。像我这样的学徒在那里开始了他们的职业生涯,并一路走到了顶峰(不再是)。
印刷品必须以落后的方式撰写文章的文字,并将铅字符叠加在一个明智的文字中。因此,在印刷时,字母将直接在纸上。所有的印刷品都可以读取与报纸一样快的镜报。因此,slu ,,(像蜗牛一样)慢的故事(最后要修复的)是很多在板凳上等待,完全由他们的拳头字母识别,大多数整个标题通常更具可读性。一些“热门”新闻在替补席上等待,可能是最后一刻的修正,(晚报)在最后一次组装和最终印刷之前。
Django出自堪萨斯州劳伦斯杂志的办公室。可能一些印刷术语仍然存在。的 A-Django的enthusiast-&安培; - 友好的老段塞男孩从 - 法国强>
答案 2 :(得分:51)
作为一段历史,“slu”一词来自报纸编辑世界。
这是制作过程中故事的非正式名称。随着故事蜿蜒曲折,从殴打记者到编辑再到“印刷机”,这就是它所引用的名称,例如,“你在”俄罗斯 - 削减 - 欧洲 - 天然气“故事中修正了这些错误吗? ?”。
Django使用它作为URL的一部分来定位故事,例如www.mysite.com/archives/russia-cuts-europe-gas
。
答案 3 :(得分:21)
来自here。
“Slug”是一个报纸术语,但是什么 这意味着这里是最后一点 URL。例如,一个帖子 标题,“有点关于Django”会 成为,“bit-about-django” 自动(当然,你可以 如果你不喜欢它,你很容易改变它 自动生成的slu。)。
答案 4 :(得分:20)
Slug是一个报纸术语。 slug是一个简短的标签,只包含字母,数字,下划线或连字符。它们通常用于URL。(如django docs)
Django中的slug字段用于存储和生成动态创建的网页的有效URLs。
就像你在Stack Overflow上添加这个问题的方式一样,生成一个动态页面,当你在地址栏中看到时,你会看到你的问题标题用“ - ”代替空格。这正是一个slu field领域的工作。
你输入的标题是这样的 - &gt; Django中的“slu”是什么?
&安培;
将它存放到一个slug中,将其归结为 什么是slug-in-django(见本页网址)
答案 5 :(得分:16)
它是URL的描述性部分,使其更具人性化描述性,但不一定是Web服务器所要求的 - 在What is a "slug" in Django?中,slug是'in-django-what-a-a- slug',但slu not不用于确定page served(至少在这个网站上)
答案 6 :(得分:14)
Slug是特定内容的URL友好短标签。它只包含字母,数字,下划线或连字符。 Slug通常与相应的内容一起保存,并作为URL字符串传递。
Slug可以使用SlugField创建
例如:
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)
你是否懒得做slu process过程?别担心,这个插件会对你有所帮助。 django-autoslug
答案 7 :(得分:7)
也是django-admin的自动slu ..在ModelAdmin中添加:
prepopulated_fields = {'slug': ('title', )}
在这里:
class ArticleAdmin(admin.ModelAdmin):
list_display = ('title', 'slug')
search_fields = ('content', )
prepopulated_fields = {'slug': ('title', )}
答案 8 :(得分:1)
sl
某物的简短标签,仅包含字母,数字,下划线或连字符。它们通常在URL中使用。例如,在典型的博客条目URL中:
https://www.djangoproject.com/weblog/2008/apr/12/spring/ 最后一点(弹簧)是the。
答案 9 :(得分:1)
这是一种生成有效URL的方法,通常使用已获得的数据。例如,使用文章标题生成URL。
答案 10 :(得分:0)
简而言之,slug帮助您摆脱那些在ecommerec网站中带有有效URL的丑陋URL的例子,而不是将URL显示为www.myecom.com/product/5432156
,而在Slug的帮助下,我可以将其显示为www.myecom.com/product/iphone11
答案 11 :(得分:0)
slug 是 URL 的一部分,它以易于阅读的形式标识网站上的特定页面。
例如,/building-your-1st-django-site
。
仅 Slug 包含: