Что такое "слизняк" в Джанго?

Когда я читаю код Django, я часто вижу в моделях то, что называется "слизень". Я не совсем уверен, что это такое, но я знаю, что это как-то связано с URL-адресами. Как и когда предполагается использовать эту штуковину?

(Я прочитал его определение в этом глоссарии.)

14 ответов

Решение

Это способ создания действительного URL, как правило, с использованием уже полученных данных. Например, используя заголовок статьи для генерации URL. Я бы посоветовал создать слаг, используя функцию с заданным названием (или другим фрагментом данных), а не устанавливать его вручную.

Пример:

<title> The 46 Year Old Virgin </title>
<content> A silly comedy movie </content>
<slug> the-46-year-old-virgin </slug>

Теперь давайте представим, что у нас есть модель Django, такая как:

class Article(models.Model):
    title = models.CharField(max_length=100)
    content = models.TextField(max_length=1000)
    slug = models.SlugField(max_length=40)

Как бы вы связали этот объект с URL, со значимым именем? Вы можете использовать Article.id, чтобы URL выглядел так:

www.example.com/article/23

Или вы можете сослаться на заголовок так:

www.example.com/article/The 46 Year Old Virgin

Проблема в том, что пробелы недействительны в URL, их необходимо заменить на %20 что некрасиво, что делает его следующим:

www.example.com/article/The%2046%20Year%20Old%20Virgin

Это не решает наш значимый URL. Разве это не было бы лучше:

www.example.com/article/the-46-year-old-virgin

Это слизняк. the-46-year-old-virgin, Все буквы в нижнем регистре и пробелы заменены дефисами -, Смотрите URL этой самой веб-страницы для примера!

Если я могу предоставить некоторый исторический контекст:

Термин "слизняк" имеет отношение к отливке металла, в данном случае к свинцу, из которого были сделаны печатные шрифты. Затем каждая бумага имела свои фабрики шрифтов, которые регулярно переплавлялись и превращались в свежие формы, так как после многих отпечатков они изнашивались. Ученики, подобные мне, начинали свою карьеру там и прошли весь путь до вершины (больше нет).

Книгопечатания должны были составлять текст статьи задом наперед, с ведущими символами, сложенными мудро. Таким образом, во время печати буквы будут прямо на бумаге. Все печатные издания могли читать газету так же быстро, как печатную. Поэтому слизняки (как улитки), а также медленные истории (последние должны быть исправлены) находились в ожидании многих на скамейке, исключительно по их первым буквам, в основном весь заголовок, как правило, более читабельный. Там, на скамейке, ожидали "горячие" новости о возможной коррекции в последний момент ("Вечерняя бумага") до последней сборки и окончательной печати.

Джанго вышел из офиса журнала Лоуренса в Канзасе. Где, вероятно, какой-то печатный жаргон все еще задерживается. A-Джанго-энтузиаст -&- дружественно старый слизняк-мальчик из-Франции.

Как часть истории, термин "слизняк" происходит из мира редактирования газет.

Это неофициальное имя, данное истории в процессе производства. По мере того как история изворачивает свой мучительный путь от репортера бит до редактора и до "печатных машин", это имя, на которое она ссылается, например: "Вы исправили эти ошибки в истории" Россия-cuts-europe-gas "??".

Django использует его как часть URL, чтобы найти историю, например www.mysite.com/archives/russia-cuts-europe-gas,

Слизняк - это газетный термин. Слаг - это короткая метка для чего-либо, содержащая только буквы, цифры, подчеркивания или дефисы. Они обычно используются в URL (как в django docs)

Слаг-поле в Django используется для хранения и генерации действительных URL-адресов для ваших динамически создаваемых веб-страниц.

Точно так же, как вы добавили этот вопрос в Переполнение стека, и динамическая страница генерируется, и когда вы видите в адресной строке, вы увидите заголовок вопроса с "-" вместо пробелов. Это точно работа слизняка.

Введенное вами название было примерно таким -> Что такое "слизняк" в Django?

&

При хранении его в слаге, поданный результат приводит к тому, что это "что-то-слаг-в-django" (см. URL этой страницы)

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

Slug можно создавать с помощью SlugField

Пример:

class Article(models.Model):
    title = models.CharField(max_length=100)
    slug = models.SlugField(max_length=100)

Если вы хотите использовать title как slug, у django есть простая функция под названием slugify

from django.template.defaultfilters import slugify

class Article(models.Model):
    title = models.CharField(max_length=100)

    def slug(self):
        return slugify(self.title)

Если для этого нужна уникальность, добавьте unique=True в слизняках.

например, из предыдущего примера:

class Article(models.Model):
    title = models.CharField(max_length=100)
    slug = models.SlugField(max_length=100, unique=True)

Вам лень делать слизняк? не волнуйтесь, этот плагин поможет вам. Джанго-autoslug

Отсюда

"Слизняк" - это газетный термин, но здесь он означает последний бит URL. Например, пост с заголовком "Немного о Джанго" автоматически станет "немного о Джанго" (вы, конечно, можете легко изменить его, если вам не нравится автоматически созданный слаг).

Это описательная часть URL, которая предназначена для того, чтобы сделать его более понятным для человека, но не обязательно запрашиваемым веб-сервером. Что такое "слизняк" в Django? слаг - это "in-django-what-is-a-slug", но слаг не используется для определения обслуживаемой страницы (по крайней мере, на этом сайте)

Также авто слаг у django-admin. Добавлено в ModelAdmin:

prepopulated_fields = {'slug': ('title', )}

Как здесь:

class ArticleAdmin(admin.ModelAdmin):
    list_display = ('title', 'slug')
    search_fields = ('content', )

    prepopulated_fields = {'slug': ('title', )}

Слаг - это часть URL-адреса, которая идентифицирует определенную страницу на веб-сайте в удобной для чтения форме.

Например, /building-your-1st-django-site.

Только пуля Содержит:

  • Буквы: az,AZ
  • Цифры: 0-9
  • Подчеркивания: _
  • Дефисы: -

слизень

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

https://www.djangoproject.com/weblog/2008/apr/12/spring/ последний бит (пружина) - это слизняк.

Slug используется в Django для динамического создания удобного/читаемого URL-адреса. Например, текущий URL-адрес этой страницы гласит:Что такое «слаг» в Django?.

Обратите внимание, как URL-адрес был slugify с фактическим вопросом (что такое slug в Django)

Это способ создания действительного URL-адреса, обычно с использованием уже полученных данных. Например, использование заголовка статьи для создания URL-адреса.

Короче говоря, слаг помогает избавиться от уродливых URL-адресов с допустимыми URL-адресами для примеров на сайте ecommerec вместо того, чтобы отображать URL-адрес как www.myecom.com/product/5432156 я могу показать это как www.myecom.com/product/iphone11 с помощью пули

В дополнение к другим ответам в Центре поиска Google говорится о SEO , как показано ниже:

Рассмотрите возможность использования дефисов для разделения слов в ваших URL-адресах, поскольку это помогает пользователям и поисковым системам легче идентифицировать понятия в URL-адресе. Мы рекомендуем использовать в URL-адресах дефисы (-) вместо подчеркиваний (_).

Итак, вы должны использовать для разделения слов, как показано ниже:

      http://example.com/blog/my-1st-blog
                      #   ↑   ↑ Use hyphens

Вместо_как показано ниже:

      http://example.com/blog/my_1st_blog
                      #   ↑   ↑ Don't use underscores

Кроме того,-используется для разделения заголовка вопросаWhat is a "slug" in Django?изslugкак показано ниже:

      https://stackoverflow.com/questions/427102/what-is-a-slug-in-django
                            # Hyphens are used ↑  ↑ ↑    ↑  ↑
Другие вопросы по тегам