在 Django 中生成 slug

http://www.jianshu.com/p/2131400102a9

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

举例说明:

# coding:utf-8

from django.db import models

from django.template.defaultfilters import slugify

class Post(models.Model):

title = models.CharField('标题', max_length=100)

content = models.TextField('内容')

publish_date = models.DateTimeField('发布日期')

url_slug = models.SlugField(editable=False)

def __unicode__(self):

return self.title

def save(self, *args, **kwargs):

self.url_slug = slugify(self.title)

super(Post, self).save(*args, **kwargs)

在 shell 中进行查看:

>>> from django.template.defaultfilters import slugify

>>> slugify('hello world')

u'hello-world'

>>> slugify('你好世界')

u''

可以看到,对于中文就会忽略。怎么解决这个问题?

django-uuslug是一个很方便的将中文转化成拼音 slug 的插件。通过使用django-uuslug,可以确保 slug 是唯一的,并且都是 unicode 编码的。

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

安装

pip install django-uuslug

版本:django-uuslug == 1.1.8

# coding:utf-8

from django.db import models

from uuslug import slugify

class Post(models.Model):

title = models.CharField('标题', max_length=100)

content = models.TextField('内容')

publish_date = models.DateTimeField('发布日期')

url_slug = models.SlugField(editable=False)

def __unicode__(self):

return self.title

def save(self, *args, **kwargs):

self.url_slug = slugify(self.title)

super(Post, self).save(*args, **kwargs)

在 shell 中进行查看:

>>> from uuslug import slugify

>>> slugify('hello world')

u'hello-world'

>>> slugify('你好世界')

u'ni-hao-shi-jie'

作者:与蟒唯舞

链接:http://www.jianshu.com/p/2131400102a9

來源:

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

你可能感兴趣的:(在 Django 中生成 slug)