Wat is een “naaktslak” in Django?

Als ik Django-code lees, zie ik vaak in modellen wat een “slug” wordt genoemd. Ik weet niet helemaal zeker wat dit is, maar ik weet wel dat het iets te maken heeft met URL’s. Hoe en wanneer moet dit slakken-ding worden gebruikt?

(Ik heb de definitie ervan gelezen in deze woordenlijst.)


Antwoord 1, autoriteit 100%

Een “slug” is een manier om een ​​geldige URL te genereren, meestal met behulp van reeds verkregen gegevens. Een slug gebruikt bijvoorbeeld de titel van een artikel om een ​​URL te genereren. Ik raad aan om de slug te genereren door middel van een functie, gegeven de titel (of een ander gegeven), in plaats van deze handmatig in te stellen.

Een voorbeeld:

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

Laten we nu net doen alsof we een Django-model hebben, zoals:

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

Hoe zou u naar dit object verwijzen met een URL en met een betekenisvolle naam? U kunt bijvoorbeeld Article.id gebruiken, zodat de URL er als volgt uitziet:

www.example.com/article/23

Of misschien wilt u de titel als volgt gebruiken:

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

Aangezien spaties niet geldig zijn in URL’s, moeten ze worden vervangen door %20, wat resulteert in:

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

Beide pogingen resulteren niet in een zeer zinvolle, gemakkelijk te lezen URL. Dit is beter:

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

In dit voorbeeld is the-46-year-old-virgineen slug: het wordt gemaakt op basis van de titel door alle letters te verkleinen en spaties te vervangen door koppeltekens -.

Zie ook de URL van deze webpagina voor een ander voorbeeld.


Antwoord 2, autoriteit 19%

Als ik wat historische context mag geven:

De term “slug”heeft te maken met het gieten van metaal – in dit geval lood – waarvan de lettertypen voor de pers zijn gemaakt. Elk papier liet zijn lettertypefabriek toen regelmatig opnieuw smelten en opnieuw gieten in nieuwe mallen, omdat deze na vele afdrukken versleten raakten. Leerlingen zoals ik begonnen hun carrière daar en gingen helemaal naar de top (niet meer).

Typografen moesten de tekst van een artikel op een achterwaartse manier samenstellen met hoofdletters op een wijze gestapeld. Dus bij het drukken zouden de letters recht op het papier staan. Alle typografen konden de krant in spiegelbeeld net zo snel lezen als de gedrukte. Daarom zaten de naaktslakken (zoals slakken) en ook de langzame verhalen (de laatste die nog moesten worden opgelost) velen op de bank te wachten, alleen te herkennen aan hun vuistletters, meestal de hele titel over het algemeen leesbaarder. Op de bank wachtte wat “heet” nieuws, voor mogelijke last-minute correctie, (Avondkrant) voor de laatste montage en definitieve druk.

Django kwam uit de kantoren van het tijdschrift Lawrence in Kansas. Waar waarschijnlijk nog wel wat drukjargon over hangt. A-django-enthousiasteling-&-vriendelijke-old-slug-boy-uit-Frankrijk.


Antwoord 3, autoriteit 9%

De term ‘naaktslak’ komt uit de wereld van de krantenproductie.

Het is een informele naam die tijdens het productieproces aan een verhaal wordt gegeven. Terwijl het verhaal zijn weg baant van de beatreporter (ervan uitgaande dat deze zelfs nog bestaanmeer?) via de redacteur tot aan de “drukpersen”, is dit de naam waarnaar wordt verwezen door, bijv. “Heb heb je die fouten in het ‘kate-and-william’-verhaal opgelost?”.

Sommige systemen (zoals Django) gebruiken de slug als onderdeel van de URL om het verhaal te vinden, een voorbeeld is www.mysite.com/archives/kate-and-william.

Zelfs Stack Overflow doet dit zelf, met de GEB-ish(a)zelfverwijzende https://stackoverflow.com/questions/427102/what-is-a-slug-in-django/427201#427201, hoewel je de slug kunt vervangen door blahblahen hij zal het nog steeds goed vinden.

Het kan zelfs eerder dateren, aangezien scenario’s “sluglines” aan het begin van elke scène hadden, die in feite de achtergrond voor die scène bepalen (waar, wanneer, enzovoort). Het lijkt erg op elkaar omdat het een preambule is van wat volgt.

Op een Linotype-machine was een naaktslak een stuk metaal met één lijn dat was gemaakt op basis van de afzonderlijke lettervormen. Door een enkele slug te maken voor de hele regel, verbeterde dit enorm ten opzichte van de oude karakter-voor-karakter compositie.

Hoewel het volgende pure gissing is, was een vroege betekenis van naaktslak voor een valse munt (die op de een of andere manier zou moeten worden ingedrukt). Ik kon me voorstellen dat het gebruik zou worden getransformeerd naar de drukterm (omdat de slak met de originele karakters moest worden ingedrukt) en van daaruit zou veranderen van de definitie van ‘stuk metaal’ naar de definitie van ‘samenvatting van het verhaal’. Van daaruit is het een kleine stap van goed printen naar de online wereld.


(a)“Godel Escher, Bach”, door ene Douglas Hofstadter, dat ik (tenminste) beschouw als een van de grote moderne intellectuele werken. Bekijk ook zijn andere werk, “Metamagical Themas”.


Antwoord 4, autoriteit 4%

Slug is een krantenterm. Een slak is een kort label voor iets dat alleen letters, cijfers, onderstrepingstekens of koppeltekens bevat. Ze worden over het algemeen gebruikt in URL’s. (zoals in Django-documenten)

Een slug-veld in Django wordt gebruikt om geldige URL’svoor uw dynamisch gemaakte web op te slaan en te genereren pagina’s.

Net zoals de manier waarop u deze vraag op Stack Overflow hebt toegevoegd en er een dynamische pagina is gegenereerd en wanneer u in de adresbalk ziet, ziet u de titel van uw vraag met “-” in plaats van de spaties. Dat is precies het werk van een naaktslakkenveld.

Voer hier de afbeeldingsbeschrijving in

De door u ingevoerde titel was ongeveer als volgt: -> Wat is een “naaktslak” in Django?

Als je het opslaat in een slug-veld, wordt het “wat-is-een-slug-in-django” (zie URL van deze pagina)


Antwoord 5, autoriteit 4%

Slug is een URL-vriendelijk kort label voor specifieke inhoud. Het bevat alleen letters, cijfers, onderstrepingstekens of koppeltekens. Naaktslakken worden gewoonlijk opgeslagen met de respectieve inhoud en worden doorgegeven als een URL-tekenreeks.

Slug kan maken met SlugField

Bijvoorbeeld:

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

Als je titel als slug wilt gebruiken, heeft django een eenvoudige functie genaamd slugify

from django.template.defaultfilters import slugify
class Article(models.Model):
    title = models.CharField(max_length=100)
    def slug(self):
        return slugify(self.title)

Als het uniek moet zijn, voeg dan unique=Truetoe in het veld slug.

bijvoorbeeld uit het vorige voorbeeld:

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

Ben je lui om een ​​slug-proces te doen? maak je geen zorgen, deze plug-in zal je helpen.
django-autoslug


Antwoord 6, autoriteit 3%

Van hier.

‘Slug’ is een krantenterm, maar wat?
het betekent dat hier het laatste stukje is van de
URL. Bijvoorbeeld een bericht met de
titel, “Een beetje over Django” zou
worden, “bit-over-django”
automatisch (u kunt natuurlijk
verander het gemakkelijk als je de niet leuk vindt
automatisch gegenereerde slug).


Antwoord 7, autoriteit 2%

Het is een beschrijvend deel van de URL dat er is om het menselijker te maken, maar zonder noodzakelijkerwijs vereist te zijn door de webserver – in Wat is een “slug” in Django?de slug is ‘in-django-what-is-a-slug’, maar de slug wordt niet gebruikt om de pagina weergegeven(tenminste op deze site)


Antwoord 8

Ook automatische slug bij django-admin. Toegevoegd bij ModelAdmin:

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

Zoals hier:

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

Antwoord 9

slak

Een kort label voor iets dat alleen letters, cijfers, onderstrepingstekens of koppeltekens bevat. Ze worden over het algemeen gebruikt in URL’s. Bijvoorbeeld in een typische URL voor blogbericht:

https://www.djangoproject.com/weblog/2008/ 12 april/lente/
het laatste stukje (lente) is de slak.


Antwoord 10

Een slug is het deel van een URL dat een bepaalde pagina op een website identificeert in een gemakkelijk leesbare vorm.

Bijvoorbeeld /building-your-1st-django-site.

Alleen slug bevat:

  • Letters: a-z,A-Z
  • Cijfers: 0-9
  • Onderstrepingstekens: _
  • Afbreekstreepjes: –

Antwoord 11

Kortom hulp bij het verwijderen van die lelijke urls met valid-urls voor voorbeelden op een ecommerec-site in plaats van de url weer te geven als www.myecom.com/product/5432156ik kan het laten zien zoals www.myecom.com/product/iphone11met behulp van slug


Antwoord 12

Het is een manier om een ​​geldige URL te genereren, meestal met behulp van reeds verkregen gegevens. Bijvoorbeeld de titel van een artikel gebruiken om een ​​URL te genereren.


Antwoord 13

Slug wordt in Django gebruikt om dynamisch een mensvriendelijke/leesbare URL te genereren. De huidige URL van deze pagina zegt bijvoorbeeld:
Wat is een “slug” in Django?.

Let op hoe de URL slugify was met de eigenlijke vraag (wat is een slug in Django)

Other episodes