Почему мне нужно использовать SlugField в Django?

Я искал в google и нашел следующее: "SlugField - это поле для хранения URL slug в реляционной базе данных. SlugField - это столбец, определяемый Django ORM. SlugField фактически определяется в django.db."

Но все же определение кажется мне немного сложным. Я даже не знаю, что такое slug в данном контексте и не уверен в Django ORM. Мне просто нужна причина, почему я должен использовать SlugField в Django в простых терминах.

Вы не должны строго использовать SlugField.

"Slug" - это термин, заимствованный из журналистики и обозначающий краткую версию названия. Как упоминалось в комментарии к вашему ответу, это способ сделать URL более явным, сохраняя при этом некоторую краткость, вместо использования, например, полного названия (которое часто бывает слишком длинным) или идентификатора (который вообще не будет явным или запоминающимся: подумайте о пользователе, который хочет найти статью, которую он помнит, как читал: если он начнет вводить в адресной строке какое-то ключевое слово, появится URL, содержащий его, а URL с идентификатором - нет)

Если вы хотите, вы можете создать свой собственный slug, сделав его удобным для URL (удалите все символы, которые не помещаются в URL, преобразуйте все, что должно быть закодировано в url, превратите пробелы в дефисы...) и удалив все лишнее (например, удалив такие слова, как the, a, an, is, are... или обрезав длинные заголовки до максимального количества слов или символов).

SlugField - это просто удобная функция, которую можно использовать для некоторой автоматизации этого процесса. Он также имеет некоторые дополнительные функции, которые могут вам понадобиться: например, он автоматически генерирует slug из выбранного вами поля и может добавить уникальный номер к slug, чтобы вы случайно не получили два одинаковых URL для двух разных статей с одинаковым названием.

Причина того, что это поле, заключается в том, что, хотя вы могли бы, неразумно вычислять slug каждый раз, когда вы обращаетесь к объекту: slug будет меняться только при изменении названия, то есть, возможно, никогда, поэтому имеет смысл сгенерировать его только один раз и затем сохранить в базе данных, чтобы использовать его в следующий раз, без необходимости создавать его снова. Это имеет дополнительное преимущество, делая URL к определенной статье постоянным: вы можете сделать так, что slug не изменится, даже если вы измените название статьи, что было бы хорошо.

Поскольку slug однозначно ссылается на конкретный объект, он действует как своего рода человекочитаемый уникальный ID, и поэтому его можно использовать для извлечения объекта из базы данных так же эффективно, как и непрозрачный числовой ID. Он также скрывает, сколько у вас объектов (если по какой-то причине вы хотите это сделать), поскольку последовательный идентификатор, скажем, 1543, говорит любому, что у вас, вероятно, есть еще 1542 объекта, которые появились до этого.

Вернуться на верх