Функция slugify

Функция slugify применяется к строке и возвращает ее версию, безопасную для использования в URL-адресах. Она удаляет все символы, кроме букв, цифр, дефисов и подчеркиваний, заменяет пробелы на дефисы и приводит все символы к нижнему регистру. Это особенно полезно при создании ЧПУ (человеко-понятных URL) на основе заголовков статей или названий продуктов.

Функция автоматически обрабатывает транслитерацию кириллицы в латиницу, что делает ее универсальным инструментом для интернационализированных проектов. Она также удаляет ведущие и замыкающие дефисы, гарантируя чистый результат.

Синтаксис

pythonfrom django.utils.text import slugify

slugify(value, allow_unicode=False)

Параметры

Функция принимает два параметра:

Пример

Давайте преобразуем заголовок статьи в URL-совместимый формат:

pythonfrom django.utils.text import slugify

title = "Как создать сайт на Django"
slug = slugify(title)
print(slug)

Результат выполнения кода:

python"kak-sozdat-sait-na-django"

Пример

Давайте рассмотрим работу с кириллицей и параметром allow_unicode:

pythonfrom django.utils.text import slugify

title = "Привет мир!"
slug_default = slugify(title)
slug_unicode = slugify(title, allow_unicode=True)

print(slug_default)
print(slug_unicode)

Результат выполнения кода:

python"privet-mir"
"привет-мир"

Пример

Давайте используем slugify в модели для автоматической генерации слага:

pythonfrom 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

Результат создания объекта:

pythonfrom myapp.models import Article

article = Article.objects.create(title="Моя первая статья")
print(article.slug)

Результат выполнения кода:

python"moia-pervaia-stattia"

Смотрите также

  • функция mark_safe,
    которая помечает строку как безопасную для вывода в шаблоне
  • класс SafeString,
    который представляет безопасную строку для HTML
  • функция escape,
    которая экранирует HTML-символы в строке
  • функция format_html,
    которая безопасно форматирует HTML-строку