django中slug是什么?有什么用?可以应用于什么地方?

    2019年9月19日 14:19   73 人阅读  0 条评论   编辑

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/

本文地址:http://www.chenxm.cc/article/907.html
版权声明: 本文为原创文章,版权归  陈新明  所有,欢迎分享本文,转载请保留出处!
PREVIOUS: 为什么要阅读Tornado的源码?
NEXT: django 如何创建一个自定义的404/500错误页面
 相关文章  关键词:

 发表评论

还没有留言,还不快点抢沙发?