Преобразование кириллицы на латиницу в Django
Первый способ.
Самый легкий, это установить модуль pytils.
pip install pytils
И вместо обычного slugify импортируем в нужном месте следующим образом:
from pytils.translit import slugify
Как пользоваться? Пример:
from pytils.translit import slugify
#some models
#some fields
#some methods
self.slug = slugify(self.title)
Второй способ:
Это модернизация slugify, я создал файлик utils.py в каком-нибудь приложении.
from django.template.defaultfilters import slugify as django_slugify
# Slugify (Cyrillic)
alphabet = {'а': 'a', 'б': 'b', 'в': 'v', 'г': 'g', 'д': 'd', 'е': 'e', 'ё': 'yo', 'ж': 'zh', 'з': 'z', 'и': 'i',
'й': 'j', 'к': 'k', 'л': 'l', 'м': 'm', 'н': 'n', 'о': 'o', 'п': 'p', 'р': 'r', 'с': 's', 'т': 't',
'у': 'u', 'ф': 'f', 'х': 'kh', 'ц': 'ts', 'ч': 'ch', 'ш': 'sh', 'щ': 'shch', 'ы': 'i', 'э': 'e', 'ю': 'yu',
'я': 'ya'}
def slugify(s):
return django_slugify(''.join(alphabet.get(w, w) for w in s.lower()))
Импортируем slugify из этого же файлика, где мы его модернизировали.
from modules.system.utils import slugify
Как пользоваться? Пример:
from modules.system.utils import slugify
#some models
#some fields
#some methods
self.slug = slugify(self.title)
Это известные способы модернизации функции Slugify в Django, которые я пользуюсь повседневно.