Регулярно требуется преобразовать какой-либо текст в максимально совместимый текст для 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
ZNAK: ход строительства за март
В ZNAK март стал месяцем активной работы: проект уверенно набирает темп.
Директор проекта Юрий Зебницкий делится итогами месяца и рассказывает, как развивается строительство. В видео — ключевые этапы и текущее состояние объекта.
Полный фотоотчет смотрите по ссылке →
#ZNAK
Иногда дом начинается не с квартиры ✨
В домах №18 и №20 ЖК ZNAK подъезды — это полноценное продолжение архитектуры проекта. Сдержанная палитра, выверенные оттенки, тонкие детали — все работает на ощущение спокойствия и вкуса, без лишнего шума.
Витражные окна наполняют пространство светом, делают холлы воздушными и живыми. Здесь нет ощущения «подъезда» в привычном смысле — это лобби, в которое приятно возвращаться каждый день.
Каждое пространство продумано до мелочей: авторский дизайн, мягкая мебель, зоны ожидания, аккуратные галереи с картинами. И при этом — все про удобство в повседневной жизни: колясочные, велосипедные, многоуровневая грязезащита.
Здесь красота и комфорт становятся равнозначными понятиями ❤️🔥
Канал «Железно Киров» в MAX →
#ZNAK
В ZNAK живет семья, которая делит жизнь между двумя странами: Италией и Россией. Он — итальянец, она — русская, двое детей, два ритма жизни, два культурных контекста. Киров для них не случайная точка на карте, а осознанная часть маршрута. И несколько лет назад этим маршрутом стал ZNAK📌
❣️У семьи уже есть квартира в проекте. Они успели прожить здесь свои сезоны, почувствовать атмосферу, оценить уровень сервиса и продуманной среды, к которому быстро привыкаешь. Поэтому, когда встал вопрос о расширении, они снова выбрали ZNAK и приобрели вторую квартиру в строящемся доме.
Это уже не просто эмоциональное решение, это стратегия, долгосрочный взгляд и доверие к качеству. И в этом есть особая символичность. ZNAK — это действительно знак качества, который считывают даже за тысячи километров.
В видео вы узнаете историю этой семьи и почему они выбирают ZNAK снова и снова. Ведь иногда лучший отзыв — это повторная покупка.
#ZNAK
ZNAK: ход строительства за февраль
В ZNAK февраль стал месяцем стабильного продвижения по ключевым направлениям.
Директор проекта Юрий Зебницкий рассказывает, какие этапы были выполнены и как сегодня выглядит стройплощадка. Подробности — в новом видеоотчете.
Полный фотоотчет смотрите по ссылке →
#ZNAK
⚡️Зима заканчивается, а вместе с ней и наши сезонные скидки
Сейчас действует выгода до 18% на подборку квартир от «Железно» — ваш последний шанс забрать квартиру мечты с суперскидкой❗️
В подборке разные сценарии жизни: с большой кухней-гостиной для долгих ужинов, с мастер-спальней для тишины, с просторной лоджией для воздуха и света. Все так же комфортно и уютно, просто с чуть более приятной цифрой в договоре.
Теперь осталось принять решение и проводить зиму с правильным результатом.
#ZNAK
🔉День открытых дверей в ЖК ZNAK
Дорогие будущие жители дома №25 (ул. Козулева, д. 2, к.3) ЖК ZNAK! 24 февраля приглашаем вас на День открытых дверей.
На встрече мы подробно расскажем о вашем новом доме и о старте передачи ключей, а также познакомим с сервисной компанией. Это отличная возможность задать все вопросы и узнать важные детали.
📌 Дата: 24 февраля
📌 Место: г. Киров, Октябрьский просп., 145, банкетный зал «Вятка»
📌 Начало регистрации и ярмарка партнеров: 17:30
Регистрируйтесь по ссылке →
До встречи — будем рады видеть вас!
#ZNAK
Как можно не любить 14 февраля, когда рядом такие жители 😍
Сегодня в ЖК ZNAK мы вместе с сервисной компанией «Азбука» вышли к жителям с небольшими валентинками — просто чтобы сказать спасибо. За улыбки во дворе, за теплые встречи в подъезде, за то, что выбираете жить здесь.
Мы строим дома, но самое главное в них — вы. И нам важно, чтобы это чувствовалось не только в проектах, но и в таких простых, искренних моментах.
Спасибо, что выбираете жить в ZNAK. Мы правда это ценим и чувствуем взаимность каждый день ❤️
#ZNAK
Провожаем зиму с горячими скидками
🔥
Февраль короткий месяц, но с очень приятным бонусом — скидки до 20% на подборку квартир от «Железно».
Отличный момент, чтобы выбрать планировку под свой сценарий жизни: с просторной гостиной, мастер-спальней, кабинетом или террасой — и сделать это на заметно более выгодных условиях.
Февраль может стать тем самым счастливым шансом. Успейте поймать зиму за хвост и проводить ее с выгодой ❤️
#ZNAK
🔉День открытых дверей в ЖК ZNAK
Дорогие будущие жители дома №33 (ул. Козулева, д. 9, к. 2) ЖК ZNAK! 19 февраля приглашаем вас на День открытых дверей.
На встрече мы подробно расскажем о вашем новом доме и о старте передачи ключей, а также познакомим с сервисной компанией. Это отличная возможность задать все вопросы и узнать важные детали.
📌 Дата: 19 февраля
📌 Место: г. Киров, Октябрьский просп., 145, банкетный зал «Вятка»
📌 Начало регистрации и ярмарка партнеров: 17:30
Регистрируйтесь по ссылке →
До встречи — будем рады видеть вас!
#ZNAK
ZNAK: ход строительства за январь
Проект ZNAK входит в 2026 год с хорошим темпом.
Директор проекта Юрий Зебницкий делится результатами января и рассказывает, с чего начался новый строительный сезон. В видео — итоги месяца и планы на ближайшее время.
Полный фотоотчет смотрите по ссылке →
#ZNAK
🔉Старт продаж дома №34 в ZNAK
Мы открываем продажи в доме №34 — новом доме города будущего.
❣️ Архитектура комплекса с северо-европейскими мотивами, сдержанные формы и выразительные материалы задают устойчивый, уравновешенный характер всего пространства — от фасадов до двора и входных групп.
❣️ Во дворе дома создан особый ландшафт, вдохновленный северной природой. Это двор, который не перегружает, а настраивает на спокойный ритм. Общественные пространства продолжают эту логику. Интерьеры мест общего пользования выполнены в природной палитре с теплым светом, округлыми формами и живыми акцентами.
❣️ Во второй секции дома реализована система «Тихий подъезд»: все квартиры сдаются с чистовой отделкой. Это значит, что после переезда не придется жить в постоянном шуме и ремонтах. Отделка доступна в двух стилях: теплом и экологичном WOOD или более строгом и основательном STONE.
Дом №34 — это еще один шаг к спокойной, продуманной жизни в ZNAK, где комфорт складывается из множества незаметных, но важных деталей.
#ZNAK
🔥Электромобиль в 2026 году это уже повседневность и в ZNAK к ней готовы. На территории жилого комплекса предусмотрены зарядные станции для электромобилей — одной из них уже пользуются жители и гости проекта.
Сегодня открыта зарядка у дома №22 (ул. Дмитрия Козулева, дом 2, корпус 5). Еще две станции уже установлены у домов №25 (ул. Дмитрия Козулева, дом 2, корпус 3) и №33 (ул. Дмитрия Козулева, дом 9, корпус 2) — они откроются в ближайшее время.
В ZNAK мы всегда думаем удобство, спокойствие и про продуманную среду, где технологии становятся естественной частью жизни.
Наш город будущего развивается — шаг за шагом, включая те решения, которые действительно нужны сегодня.
#ZNAK