一尘不染

如何使Django slugify与Unicode字符串一起正常工作?

django

如何防止slugify过滤器剥离非ASCII字母数字字符?(我正在使用Django 1.0.2)

cnprog.com的网址中包含汉字,因此我查看了他们的代码。他们没有slugify在模板中使用,而是在Question模型中调用此方法来获取永久链接

def get_absolute_url(self):
    return '%s%s' % (reverse('question', args=[self.id]), self.title)

他们是不是在撒谎URL?


阅读 330

收藏
2020-03-28

共1个答案

一尘不染

我在Askbot问答论坛上采用了一个名为unidecode的python软件包,它适用于基于拉丁语的字母,甚至对希腊人来说也很合理:

>>> import unidecode
>>> from unidecode import unidecode
>>> unidecode(u'διακριτικός')
'diakritikos'

它对亚洲语言有些奇怪:

>>> unidecode(u'影師嗎')
'Ying Shi Ma '
>>> 

这有意义吗?

在askbot中,我们按如下方式计算段塞:

from unidecode import unidecode
from django.template import defaultfilters
slug = defaultfilters.slugify(unidecode(input_text))
2020-03-28