Функция slugify
Функция slugify применяется к строке и возвращает
ее версию, безопасную для использования в URL-адресах.
Она удаляет все символы, кроме букв, цифр, дефисов и
подчеркиваний, заменяет пробелы на дефисы и приводит
все символы к нижнему регистру. Это особенно полезно
при создании ЧПУ (человеко-понятных URL) на основе
заголовков статей или названий продуктов.
Функция автоматически обрабатывает транслитерацию кириллицы в латиницу, что делает ее универсальным инструментом для интернационализированных проектов. Она также удаляет ведущие и замыкающие дефисы, гарантируя чистый результат.
Синтаксис
from django.utils.text import slugify
slugify(value, allow_unicode=False)
Параметры
Функция принимает два параметра:
- ⁅b⁆value⁅/b⁆ - строка, которую необходимо преобразовать.
-
⁅b⁆allow_unicode⁅/b⁆ - булевый флаг. Если установлен
в
True, функция сохраняет Unicode-символы вместо их транслитерации. По умолчанию равенFalse.
Пример
Давайте преобразуем заголовок статьи в URL-совместимый формат:
from django.utils.text import slugify
title = "Как создать сайт на Django"
slug = slugify(title)
print(slug)
Результат выполнения кода:
"kak-sozdat-sait-na-django"
Пример
Давайте рассмотрим работу с кириллицей и параметром
allow_unicode:
from django.utils.text import slugify
title = "Привет мир!"
slug_default = slugify(title)
slug_unicode = slugify(title, allow_unicode=True)
print(slug_default)
print(slug_unicode)
Результат выполнения кода:
"privet-mir"
"привет-мир"
Пример
Давайте используем slugify в модели для
автоматической генерации слага:
from django.db import models
from django.utils.text import slugify
class Article(models.Model):
title = models.CharField(max_length=200)
slug = models.SlugField(max_length=200, unique=True, blank=True)
def save(self, *args, **kwargs):
if not self.slug:
self.slug = slugify(self.title)
super().save(*args, **kwargs)
def __str__(self):
return self.title
Результат создания объекта:
from myapp.models import Article
article = Article.objects.create(title="Моя первая статья")
print(article.slug)
Результат выполнения кода:
"moia-pervaia-stattia"
Смотрите также
-
функция
mark_safe,
которая помечает строку как безопасную для вывода в шаблоне -
класс
SafeString,
который представляет безопасную строку для HTML -
функция
escape,
которая экранирует HTML-символы в строке -
функция
format_html,
которая безопасно форматирует HTML-строку