slug是一个报纸术语,slug是一个种短标签,只包含字母,数字,下划线或连字符。通常用于url中,有利于SEO
slug是一种生成有效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
但是,由于空格在URL中是无效的,需要蒋琪替换为%20,这让人看起来非常不舒服,如下所示:
www.example.com/article/The%2046%20Year%20Old%20Virgin
使用slug,会让网址看起来更加舒服
www.example.com/article/the-46-year-old-virgin
由于slug特殊性,在实际操作中无法保证slug唯一性,建议实际操作应该如下:
www.example.com/article/23/the-40-year-old-virgin
实际开发中,如果想要用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的步骤,可以使用模块django-autoslug
文档:https://docs.djangoproject.com/en/2.2/ref/models/fields/