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

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

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

9 ответов


это способ создания действительного 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-адресом, со значимым именем? Ты мог бы ... используйте статью.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. Все буквы downcased и пробелы заменяются на дефисы -. См. URL-адрес эта самая веб-страница для примера!


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

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

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

а-Джанго-энтузиаст-и-дружелюбный-старый-слизняк-мальчик-из-Франции.

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

это неофициальное название, данное истории во время производственного процесса. По мере того как история прокладывает свой мучительный путь от репортера beat до редактора через "печатные станки", это имя, на которое она ссылается, например: "вы исправили эти ошибки в истории" Россия-режет-Европа-газ"?".

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


с здесь.

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


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

поле slug в Django используется для хранения и генерации valid URLs для динамически создаваемых веб-страниц.

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

Enter image description here

название, введенное вами, было что-то вроде этого - > что такое "слизень" в Django?

&

при хранении его в слизень, подал результаты его в what-is-a-slug-in-django (см. URL этой страницы)


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


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

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

Ex:

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 в slug поле.

например, от предыдущий пример:

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

вы ленивы, чтобы сделать процесс слизняк ? не волнуйтесь, этот плагин поможет вам. django-autoslug


также автоматический слиток в django-admin. Добавлено в ModelAdmin:

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

а вот:

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

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

слаг

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

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