slug 翻譯過來就是:標(biāo)稱批旺, 單位的意思幌陕。在 django 中,slug 指有效 URL 的一部分汽煮,能使 URL 更加清晰易懂搏熄。比如有這樣一篇文章棚唆,標(biāo)題是"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('標(biāo)題', max_length=100)
content = models.TextField('內(nèi)容')
publish_date = models.DateTimeField('發(fā)布日期')
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 中進(jìn)行查看:
>>> from django.template.defaultfilters import slugify
>>> slugify('hello world')
u'hello-world'
>>> slugify('你好世界')
u''
可以看到,對于中文就會(huì)忽略止后。怎么解決這個(gè)問題瞎惫?
django-uuslug
是一個(gè)很方便的將中文轉(zhuǎn)化成拼音 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('標(biāo)題', max_length=100)
content = models.TextField('內(nèi)容')
publish_date = models.DateTimeField('發(fā)布日期')
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 中進(jìn)行查看:
>>> from uuslug import slugify
>>> slugify('hello world')
u'hello-world'
>>> slugify('你好世界')
u'ni-hao-shi-jie'