当前位置:   article > 正文

django slug中文 unicode报错 不显示问题_unicode_slug.slugify(

unicode_slug.slugify(

常规引用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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

在 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()

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

闽ICP备14008679号