wake-up-neo.com

Was ist eine "Schnecke" in Django?

Wenn ich Django code lese, sehe ich oft in Modellen, was als "Schnecke" bezeichnet wird. Ich bin mir nicht ganz sicher, was das ist, aber ich weiß, dass es etwas mit URLs zu tun hat wann soll das slug-ding verwendet werden

(Ich habe die Definition in dieses Glossar gelesen.)

516
Jonas

Es ist eine Möglichkeit, eine gültige URL zu generieren, in der Regel unter Verwendung bereits erhaltener Daten. Verwenden Sie beispielsweise den Titel eines Artikels, um eine URL zu generieren. Ich empfehle, den Slug mit einer Funktion zu generieren, die einen Titel (oder ein anderes Datenelement) enthält, anstatt ihn manuell festzulegen.

Ein Beispiel:

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

Stellen wir uns nun vor, wir hätten ein Django Modell wie:

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

Wie würden Sie dieses Objekt mit einer URL mit einem aussagekräftigen Namen referenzieren? Sie könnten Article.id verwenden, damit die URL so aussieht:

www.example.com/article/23

Oder Sie könnten den Titel wie folgt referenzieren:

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

Das Problem ist, dass Leerzeichen in URLs nicht gültig sind. Sie müssen durch %20 Ersetzt werden, was hässlich ist.

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

Das löst unsere aussagekräftige URL nicht. Wäre das nicht besser:

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

Das ist eine Schnecke. the-46-year-old-virgin. Alle Buchstaben werden in Großbuchstaben geschrieben und Leerzeichen durch Bindestriche ersetzt -. Ein Beispiel finden Sie unter der URL dieser Webseite!

660
Josh Smeaton

Wenn ich einen historischen Kontext angeben darf:

Der Begriff "Schnecke" hat mit dem Gießen von Metall - in diesem Fall Blei - zu tun, aus dem die Druckschriften hergestellt wurden. Jedes Papier ließ dann seine Schriftenfabrik regelmäßig neu schmelzen und in frische Formen gießen, da sie nach vielen Drucken abgenutzt waren. Auszubildende wie ich haben dort ihre Karriere begonnen und sind ganz nach oben gegangen (nicht mehr).

Typographen mussten den Text eines Artikels rückwärts komponieren, wobei die Hauptfiguren weise gestapelt waren. Zum Zeitpunkt des Drucks wären die Buchstaben also direkt auf dem Papier. Alle Typographen konnten die Zeitung lesen, die so schnell gespiegelt war wie die gedruckte. Daher standen die Schnecken, (wie Schnecken) auch die langsamen Geschichten (die zuletzt repariert wurden) viele auf der Bank und warteten, einzig durch ihre Faustbuchstaben identifiziert, meistens war der gesamte Titel im Allgemeinen besser lesbar. Dort auf der Bank warteten einige "heiße" Nachrichten auf eine mögliche Last-Minute-Korrektur (Abendblatt) vor der letzten Versammlung und dem endgültigen Druck.

Django kam aus den Büros des Lawrence-Journals in Kansas. Wo wohl noch etwas Drucksprache verweilt. A-Django-Enthusiast - & - freundlicher alter Schneckenjunge aus Frankreich.

112
MikkaH Savva

Als ein Stück Geschichte stammt der Begriff "Schnecke" aus der Welt der Zeitungsredaktion.

Es ist der informelle Name, der einer Geschichte während des Produktionsprozesses gegeben wird. Während sich die Geschichte vom Beat-Reporter über den Redakteur bis zu den "Druckmaschinen" windet, ist dies der Name, auf den sie sich bezieht, z ".

Django verwendet es als Teil der URL, um die Geschichte zu lokalisieren. Ein Beispiel dafür ist www.mysite.com/archives/russia-cuts-europe-gas.

55
paxdiablo

Von hier .

"Slug" ist ein Zeitungsbegriff, aber was es hier bedeutet, ist das letzte Stück der URL. Ein Post mit dem Titel "Ein bisschen über Django" würde beispielsweise automatisch zu "Ein bisschen über Django" (Sie können ihn natürlich leicht ändern, wenn Sie den automatisch generierten Slug nicht mögen).

23
BobbyShaftoe

Slug ist ein Zeitungsbegriff. Ein Slug ist eine Kurzbezeichnung für etwas, das nur Buchstaben, Zahlen, Unterstriche oder Bindestriche enthält. Sie werden im Allgemeinen in URLs verwendet (wie in Django docs)

In einem Slug-Feld in Django) werden gültige RLs für Ihre dynamisch erstellten Webseiten gespeichert und generiert.

Genau wie Sie diese Frage im Stapelüberlauf hinzugefügt und eine dynamische Seite generiert haben, wird in der Adressleiste anstelle der Leerzeichen der Fragentitel mit "-" angezeigt. Das ist genau die Aufgabe eines Schneckenfeldes.

Enter image description here

Der von Ihnen eingegebene Titel war ungefähr so ​​-> Was ist eine „Schnecke“ in Django?

&

Beim Speichern in einem Slug werden die Ergebnisse in "Was ist ein Slug in Django" abgelegt (siehe URL dieser Seite).

21
Manjit Kumar

Es handelt sich um einen beschreibenden Teil der URL, der dazu dient, die Beschreibung menschlicher zu gestalten, ohne jedoch unbedingt vom Webserver benötigt zu werden. Was ist eine "Schnecke" in Django? slug ist 'in-Django-was-ist-eine-Schnecke', aber die Schnecke wird nicht verwendet, um die Seite zu bestimmen, die geliefert wird (zumindest auf dieser Seite)

17
Cebjyre

Slug ist eine URL-freundliche Kurzbezeichnung für bestimmte Inhalte. Es enthält nur Buchstaben, Zahlen, Unterstriche oder Bindestriche. Slugs werden üblicherweise mit dem jeweiligen Inhalt gespeichert und als URL-String übergeben.

Slug kann mit SlugField erstellt werden

Ex:

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

Wenn Sie title als Slug verwenden möchten, hat Django eine einfache Funktion namens slugify

from Django.template.defaultfilters import slugify

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

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

Wenn Sie Eindeutigkeit benötigen, fügen Sie unique=True In das Slug-Feld ein.

zum Beispiel aus dem vorherigen Beispiel:

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

Sind Sie faul, Schneckenprozess zu tun? Keine Sorge, dieses Plugin wird dir helfen. Django-Autoslug

16
Simplans

Auch Auto Slug bei Django-Admin. Hinzugefügt bei ModelAdmin:

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

Wie hier:

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

    prepopulated_fields = {'slug': ('title', )}
8
Alexey Kuzmin

Schnecke

Eine kurze Bezeichnung für etwas, die nur Buchstaben, Zahlen, Unterstriche oder Bindestriche enthält. Sie werden im Allgemeinen in URLs verwendet. Zum Beispiel in einer typischen Blogeintrags-URL:

https://www.djangoproject.com/weblog/2008/apr/12/spring/ das letzte Stück (Frühling) ist die Schnecke.

3
Sonia Rani