什么是在Django“slu?”?

当我读取Django代码时,我经常在模型中看到所谓的“slu </s>”。 我不太确定这是什么,但我知道这与URL有关。 如何以及何时应该使用这个slu </s>的东西?

(我已经阅读了这个术语表中的定义。)

这是一种生成有效URL的方式,通常使用已经获得的数据。 例如,使用文章的标题来生成一个URL。 我build议生成slu,,使用一个函数,给一个标题(或其他数据),而不是手动设置。

一个例子:

<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中是无效的,它们需要被丑陋的%20replace,使其成为以下内容:

 www.example.com/article/The%2046%20Year%20Old%20Virgin 

这不是解决我们有意义的URL。 这不是更好吗:

 www.example.com/article/the-46-year-old-virgin 

这是一个slu </s>。 the-46-year-old-virgin 。 所有的信件都被降低,空格被连字符所替代。 看到这个网页的url的例子!

我可以做到这一点:

术语“slu has 与铸造金属铅有关,在这种情况下,印刷字体是由铅制成的。 然后,每一张纸,都经常将字体工厂重新熔化,并用新鲜的模具烤干。 因为经过多次印刷,他们已经不在了。 像我这样的学徒在那里开始了他们的职业生涯,一路走到最前面。 (不再)

字体必须以一种明智的方式将主要的字符组合成文章的文本。 所以在打印的时候,这些信件会直接放在纸上。 所有的印刷品都可以读到与印刷版一样快的报纸。因此,如同蜗牛一样,缓慢的故事(最后被固定的)在板凳上等待的时候也是如此,只有他们的拳头字母才能识别,大部分是整体标题通常更具可读性。 一些“热门”的消息在那里坐在板凳上,可能是最后一分钟的改正(晚报),然后再进行最后的汇编和确定的打印。

Django从堪萨斯Lawrence杂志的办公室出现。 哪里可能有印刷行话仍然徘徊。 A-Django的enthousiast – & -友好-老鼻涕虫男孩来自法国。

作为一种历史,“slu'”一词来自报纸编辑的世界。

这是生产过程中故事的非正式名称。 当故事将它从殴打记者到编辑到“印刷机”的曲折道路,这就是它被引用的名字,例如,“你是否已经在”俄罗斯 – 欧洲 – 天然气“故事中修正了这些错误?”。

Django使用它作为URL的一部分来定位故事,例如www.mysite.com/archives/russia-cuts-europe-gas

从这里 。

“Slug”是一个报纸术语,但是这里的意思是URL的最后一部分。 例如,一个标题为“关于Django”的post会自动变成“bit-about-django”(当然,如果你不喜欢自动生成的slug,你可以很容易地改变它)。

它是URL的一个描述性部分,它使得它更具有人性化的描述性,但并不一定是Web服务器所需要的 – 什么是Django中的“slug”? 这个slu is是'in-django-what-a-a-slug',但是slu is不是用来确定页面的服务 (至less在这个网站上)

S is是一个报纸术语。 一个slu is是一个短的标签的东西,只包含字母,数字,下划线或连字符。他们通常用于url(如在Django文档)

Django中的slug字段用于为dynamic创build的网页存储和生成有效的URL 。

就像你在Stack Overflow上添加这个问题的方式一样,生成一个dynamic页面,当你在地址栏中看到的时候,你会看到你的问题标题是“ – ”而不是空格。 这正是塞子领域的工作。

在这里输入图像说明

你input的标题是这样的 – >什么是在Django“slu”“?

将它存储到一个slu,中后,将其导入到django中(参见本页的URL)

还在django-admin自动slu </s>。 在ModelAdmin添加:

 prepopulated_fields = {'slug': ('title', )} 

如下所示:

 class ArticleAdmin(admin.ModelAdmin): list_display = ('title', 'slug') search_fields = ('content', ) prepopulated_fields = {'slug': ('title', )} 

Slug是特定内容的友好的URL标签。 它只包含字母,数字,下划线或连字符。 S are通常会保存相应的内容,并作为URLstring传递。

S can可以使用SlugField创build

例如:

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

如果你想使用标题作为slugify 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