django slug中文 unicode报错 不显示问题

常规引用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()

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值