Как создать slug из неанглийских значений?
У меня есть модель Author с полями firstname, lastname. Я хочу добавить еще одно поле 'slug' которое будет содержать slug из конкатенации этих полей. Однако эти поля содержат неанглийские символы, а мне нужен английский slug для создания шаблона ссылки "localhost/authors/str::slug". Как я могу это реализовать?
Вы можете сначала преобразовать имя в латинские символы, используя trans
.
pip install trans
from trans import trans
from django.utils.text import slugify
author_slug = slugify( trans(first_name + " " + last_name) )
Или, если вы не возражаете против таких символов, как: %20, %C3
вы можете использовать
from urllib.parse import quote
author_slug = slugify( quote(first_name + " " + last_name) )
Для решения этой проблемы вы можете использовать unidecode
и slugify
.
Вы должны установить его с помощью pip install unidecode
from unidecode import unidecode
from django.template import defaultfilters
slug = defaultfilters.slugify(unidecode(input_text))
пример:
import unidecode
a = unidecode.unidecode('привет')
the answer will be ('privet') #this is just an example in russian.
and after that you can apply slugify