Регулярно требуется преобразовать какой-либо текст в максимально совместимый текст для URL, имени файла, имени объекта в каком-то софте и тд. Требования совместимости простые: в тексте должны быть только допустимые символы. Обычно это a-z, 0-9 и "_" или "-". То есть, только прописные буквы латинского алфавита и цифры (как пример).
Допустим, нам нужно название статьи в блоге преобразовать в slug для добавления его в URL этой статьи. Как это лучше всего сделать?
В Django по умолчанию есть готовая функция slugify для таких случаев.
Но я её никогда не использую. Почему? Потому что её недостаточно!
Приведём пример
>>> from django.utils.text import slugify
>>> slugify('This is a Title')
'this-is-a-title'
Пока всё отлично
>>> slugify('This is a "Title!"')
'this-is-a-title'
Спец символы удалились, всё хорошо.
>>> slugify('Это заголовок статьи')
''
Вот и приехали 😢. Если текст не английский то буквы просто игнорируются. Можно это поправить
>>> slugify('Это заголовок статьи', allow_unicode=True)
'это-заголовок-статьи'
Но тогда мы не вписываемся в условие. У нас появилась кириллица в тексте.
Так как я часто пишу сайты для русскоязычных пользователей эта проблема весьма актуальна. Я не использую стандартную функцию и всегда пишу свою.
Оригинал я не беру в расчёт и пишу полностью свою функцию. И так, по порядку:
🔸1. Исходный текст:
>>> text = 'Мой заголовок №10 😁!'
Взял специально посложней со специальными символами.
🔸2. Транслит
Необходимо сделать транслит всех символов в латиницу. Здесь очень выручает библиотека unidecode. Помимо простого транслита кириллицы в латиницу она умеет преобразовывать спец символы и иероглифы в текстовые аналоги.
from unidecode import unidecode
>>> unidecode("Ñ Σ ® µ ¶ ¼ 月 山")
'N S (r) u P 1/4 Yue Shan'
Очень крутая библиотека, советую👍
В нашем случае получаем такое преобразование:
>>> text = unidecode(text)
>>> print(text)
'Moi zagolovok No. 10 !'
Отличный транслит. Смайл просто удалился, хотя я ждал что-то вроде :). Ну и ладно, всë равно невалидные символы.
А еще наш код уже поддерживает любой язык, будь то хинди или корейский.
🔸4. Фильтр символов
Unidecode не занимается фильтрацией по недопустимым символам. Это мы делаем в следующем шаге через regex. Просто заменим все символы на "_" если они вне указанного диапазона.
>>> text = re.sub(r'[^a-zA-Z0-9]+', '_', text)
>>> print(text)
'Moi_zagolovok_No_10_'
Символ "+" в паттерне выручает когда несколько недопустимых символов идут рядом. Все они заменяются на один символ "_".
🔸5. Slugify
Осталось удалить лишние символы по краям и сделать нижний регистр
>>> text = text.strip('_').lower()
>>> print(text)
'moi_zagolovok_no_10'
Получаем отличный slug! 😎
🌎 Полный код в виде функции.
______________
PS. Проверку что в строке остался хоть один допустимый символ я бы вынес в отдельную функцию.
#libs#tricks#django
🎙️WEEK 16 | LIVE DISCUSSION
🔴FROM ADWA TO HARLEM
▪️How did Ethiopia’s 1896 victory under Menelik II inspire Black resistance in America?
▪️How did the 1935 Italian invasion spark mass mobilization in Harlem?
⚔️TOPICS:
▪️Fascism, Ethiopia & U.S. Neutrality
▪️Government measures against Black internationalists
▪️Ethiopia as a symbol of Black dignity & global solidarity
📅Feb 25, 2026
🕗 8–10 PM (EST) | 2–4 PM (Ethiopia)
🎙️Host: Ethiopia First
🗣️Guest: Alexander Yohannes — Red Nile Media
🔗Join Live:https://t.me/+AAE_Pc8aWTczYTA0
🔥 History. Power. Resistance.
Don’t miss this deep dive into Ethiopia and the global Black experience.
#Adwa#PanAfricanism#Ethiopia#BlackInternationalism#RedNileMedia#EthiopiaFirst
Taste of Africa: Маски 🎭
🇳🇬 Маска, объединившая континент: как древний артефакт стал символом современной Африки
Вы наверняка видели это лицо — на эмблемах, постерах и в панафриканской визуальной культуре. За этим образом стоит целая эпоха - эта 500 летняя маска стала “лицом” крупнейшего панафриканского события ХХ века!
👑 Портрет королевы
Маска из слоновой кости — портрет Идии, первой Матери королевы (Иоба) Бенинского царства XVI века (территория современной Нигерии). Её сын, Оба Эсиги, сделал её ключевой советницей.
В традиции эдо Идия — символ исключительной силы и влияния, женщина, чьё имя связано с военной и политической мощью государства.
🐚 Символизм в деталях
Каждая деталь говорит о смыслах:
• 🦴 Слоновая кость — статус и особая “сакральная ценность”; в местных представлениях связана и с образом морского божества Олокуна, покровителя богатства.
• 🔴 Коралловые бусы — знак высшей власти и придворной элиты.
• 👥 Фигурки португальцев на короне — память о ранних контактах и торговле.
• 🐟 Илистые прыгуны — образ “пограничного” существа между водой и сушей, символ двойственности мира людей и духов.
💔 Утраченная реликвия
В 1897 году британская карательная экспедиция разграбила дворец Обы, и несколько масок Идии были вывезены за пределы Африки. Сегодня оригиналы находятся в крупных музеях и коллекциях Европы и США, а дискуссия о реституции и праве на культурное наследие продолжается.
🌟 Звёздный час: FESTAC ’77
Второе рождение образа произошло в 1977 году, когда Нигерия приняла FESTAC ’77 — Второй всемирный фестиваль африканского искусства и культуры.
Это был не просто фестиваль. Это была культурная декларация: Африка и диаспора говорят о себе — через музыку, театр, танец, выставки и дискуссии.
По данным оргкомитета и последующих публикаций о FESTAC, фестиваль собрал тысячи участников из стран Африки и диаспоры и стал одним из крупнейших культурных форумов панафриканского мира. Для него развивали городскую инфраструктуру, включая Festac Village и ключевые площадки Лагоса.
🤝 Почему именно эта маска?
Организаторам нужен был символ, который будет понятен без перевода и лозунгов — всем людям африканского происхождения. И выбор пал на маску Идии: женская мудрость + власть + связь с великим доколониальным прошлым.
Ирония в том, что оригинал находился за пределами Нигерии, и получить его для фестиваля было невозможно. Тогда художник Эрхабор Эмокпаэ создал масштабную бронзовую интерпретацию образа — и она стала визуальным центром FESTAC.
Сегодня этот символ по прежнему связан с Лагосом и Национальным театром.
Так артефакт XVI века, переживший колониальное изъятие, превратился в знак культурного возрождения и единства.
✅ Вывод
Культурные символы представляют в себе воплощение вселенских законов красоты и гармонии, поэтому они остаются на века: они формируют идентичность, возвращают достоинство и дают обществу язык, на котором оно может говорить о прошлом и будущем.
FESTAC ’77 показал, что мнение можно выражать не только словами — но и образом. И этот образ способен объединять континент.
❓Вопрос к вам
Какой символ Африки (артефакт, песня, фестиваль, фильм) сильнее всего влияет на ваше ощущение “мы есть”? Напишите в комментариях.
Предлагаем посетить мероприятие основателя бренда Suchille Присциллы Бест завтра 28 февраля и 1 марта, чтобы познакомиться поближе с историей и культурой Нигерии! 💗
Мероприятие состоится в ресторане 4Pees, подробности тут. @SuchilleGlobal⬅️
https://t.me/taste_of_africa/144
🥁🌟 Ритмическое путешествие продолжается: Символы вне времени🥁🌟🌍💫
#TasteOfAfrica#Nigeria#BeninKingdom#QueenIdia#AfricanArt#FESTAC77#PanAfricanism#CulturalHeritage#Restitution#HistoryOfAfrica#Африка#Нигерия#ИскусствоАфрики#ИсторияАфрики#КультурноеНаследие