当前位置:   article > 正文

在 Django 中生成 slug_django slug

django slug

slug 翻译过来就是:标称, 单位的意思。在 django 中,slug 指有效 URL 的一部分,能使 URL 更加清晰易懂。比如有这样一篇文章,标题是"13岁的孩子",它的 URL 地址是"/posts/13-sui-de-hai-zi",后面这一部分便是 slug。

举例说明:

  1. # coding:utf-8
  2. from django.db import models
  3. from django.template.defaultfilters import slugify
  4. class Post(models.Model):
  5. title = models.CharField('标题', max_length=100)
  6. content = models.TextField('内容')
  7. publish_date = models.DateTimeField('发布日期')
  8. url_slug = models.SlugField(editable=False)
  9. def __unicode__(self):
  10. return self.title
  11. def save(self, *args, **kwargs):
  12. self.url_slug = slugify(self.title)
  13. super(Post, self).save(*args, **kwargs)

在 shell 中进行查看:

  1. >>> from django.template.defaultfilters import slugify
  2. >>> slugify('hello world')
  3. u'hello-world'
  4. >>> slugify('你好世界')
  5. u''

可以看到,对于中文就会忽略。怎么解决这个问题?
django-uuslug 是一个很方便的将中文转化成拼音 slug 的插件。通过使用 django-uuslug,可以确保 slug 是唯一的,并且都是 unicode 编码的。

Github地址: django-uuslug,方便查看。

安装

pip install django-uuslug
  • 版本:django-uuslug == 1.1.8
  1. # coding:utf-8
  2. from django.db import models
  3. from uuslug import slugify
  4. class Post(models.Model):
  5. title = models.CharField('标题', max_length=100)
  6. content = models.TextField('内容')
  7. publish_date = models.DateTimeField('发布日期')
  8. url_slug = models.SlugField(editable=False)
  9. def __unicode__(self):
  10. return self.title
  11. def save(self, *args, **kwargs):
  12. self.url_slug = slugify(self.title)
  13. super(Post, self).save(*args, **kwargs)

在 shell 中进行查看:

  1. >>> from uuslug import slugify
  2. >>> slugify('hello world')
  3. u'hello-world'
  4. >>> slugify('你好世界')
  5. u'ni-hao-shi-jie'

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/204019
推荐阅读
相关标签
  

闽ICP备14008679号