如何让Django从unicode角色创建slug?

Ank*_*haa 6 django unicode slug

Django Unicode Slug怎么样?

class NewsModel(models.Model):
    title = models.CharField(max_length = 300)
    slug = models.CharField(max_length = 300)
    content = models.TextField()
    def save(self,*args, **kwargs):
        if self.slug is None:
             self.slug = ???
        super(NewsModel, self).save(*args, **kwargs)

    def get_absolute_url(self):
        return reverse("news_view", kwargs = {"slug" : self.slug, } )
Run Code Online (Sandbox Code Playgroud)

e-s*_*tis 6

Django有一个功能:

In [11]: from django.template.defaultfilters import slugify
In [13]: slugify(u'ç é YUOIYO  ___ 89098')
Out[13]: u'c-e-yuoiyo-___-89098'
Run Code Online (Sandbox Code Playgroud)

但实际上你是的时候使用更好prepopulated_fields参数和SlugField.

编辑:

这似乎是一个重复的问题,其他OP中提出的答案也很有效.首先安装unidecode,然后:

In [2]: import unidecode
In [3]: unidecode.unidecode(u"???? ??")
Out[3]: 'Sain uu
Run Code Online (Sandbox Code Playgroud)

你可以把它传递给slugify.

如果你正在寻找unicodecaractèers的slu ,,你可以使用mozilla/unicode-slugify

In [1]: import slugify
In [2]: slugify.slugify(u"???? ??")
Out[3]: u'\u0441\u0430\u0439\u043d-\u0443\u0443'
Run Code Online (Sandbox Code Playgroud)

结果是 http://example.com/news/????-??