赞
踩
常规引用slug 一般用于url标识
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 编码的。
pip install django-uuslug
from uuslug import slugify
其他一样
django slug一般都用self.slug = slugify(self.title),还要解决中文Unicode,为什么不用id作为slug呢?
我认为因为在save对象的时候,id还没有产生#先插入数据
看到有人使用这种方法,感觉不错,slug与id进行了绑定,但是有漏洞,Country.objects.get(name=‘美国’)有可能返回不只一个值!!需注意
#先插入数据
new_country = Country()
new_country.name = ‘美国’
new_country.slug = ‘example’ #slug暂时用example
new_country.save()
#其次更新数据
oldcountry = Country.objects.get(name=‘美国’)
oldcountry.slug = oldcountry.id #slug==id
oldcountry.save()
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。