Django中的“slug”是什么?
当我读取Django代码时,我经常在模型中看到所谓的“slu”“。 我不太确定这是什么,但我知道它与URL有关。 如何以及何时应该使用这个slu thing的东西?
(我已阅读本术语表中的定义。)
这是一种生成有效URL的方式,通常使用已获得的数据。 例如,使用文章的标题来生成一个URL。 我建议使用一个函数,给出一个标题(或其他数据),而不是手动设置它来生成slu generate。
一个例子:
<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)
你如何用一个有意义的名称来引用这个对象? 您可以使用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
这是一个slu。。 the-46-year-old-virgin
。 所有的字母都被降低,空格被连字符替代-
。 查看此网页的网址以获取示例!
如果我可以提供一些历史背景:
术语“slu”“与铸造金属铅有关,在这种情况下,制造印刷字体。 每张纸的字体工厂都经常重新熔化并重新铸造成新的模具,因为经过多次印刷后,它们变得破旧不堪。 像我这样的学徒在那里开始了他们的职业生涯,并一直走到顶端(不再是)。
印刷品必须以落后的方式撰写文章的文字,主角需要以明智的方式堆放。 所以在印刷时,信件会直接放在纸上。 所有印刷品都可以阅读与印刷版一样快的报纸。 因此,slu,(像蜗牛)也是缓慢的故事(最后被固定),许多人在等待中,只用拳头字母标识,大部分标题通常更具可读性。 一些“热门”新闻正在替补席上等待,以便在最后一次装配和最终印刷之前进行最后更正(晚上报纸)。
Django从堪萨斯Lawrence杂志的办公室出现。 哪里可能有印刷行话仍然徘徊。 A-Django的爱好者- & -友好-老鼻涕虫男孩来自法国。
作为一种历史,“slu'”一词来自报纸编辑世界。
这是生产过程中故事的非正式名称。 随着故事风靡它从殴打记者到编辑到“印刷机”的曲折道路,这就是它被引用的名字,例如,“你是否修正了'俄罗斯 - 切割 - 欧洲 - 天然气'故事中的错误?”。
Django使用它作为URL的一部分来定位故事,例如www.mysite.com/archives/russia-cuts-europe-gas
。