How to make Django slugify work properly with Unicode strings?


What can I do to prevent slugify filter from stripping out non-ASCII alphanumeric characters? (I'm using Django 1.0.2) has Chinese characters in question URLs, so I looked in their code. They are not using slugify in templates, instead they're calling this method in Question model to get permalinks

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

Are they slugifying the URLs or not?

12/19/2015 9:11:16 AM

Accepted Answer

There is a python package called unidecode that I've adopted for the askbot Q&A forum, it works well for the latin-based alphabets and even looks reasonable for greek:

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

It does something weird with asian languages:

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

Does this make sense?

In askbot we compute slugs like so:

from unidecode import unidecode
from django.template import defaultfilters
slug = defaultfilters.slugify(unidecode(input_text))
10/27/2010 6:58:15 PM

The Mozilla website team has been working on an implementation : sample code at

Licensed under: CC-BY-SA with attribution
Not affiliated with: Stack Overflow