Question

Lorsque je lis le code Django, je vois souvent dans les modèles ce qu’on appelle un "slug". Je ne sais pas trop ce que c'est, mais je sais que cela a quelque chose à voir avec les URL. Comment et quand cette limace est-elle censée être utilisée?

(J'ai lu sa définition dans ce glossaire .)

Était-ce utile?

La solution

C'est un moyen de générer une URL valide, en utilisant généralement les données déjà obtenues. Par exemple, utiliser le titre d'un article pour générer une URL. Je conseillerais de générer le slug, en utilisant une fonction, à partir d'un titre (ou d'un autre élément de données), plutôt que de le définir manuellement.

Un exemple:

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

Supposons maintenant que nous avons un modèle Django tel que:

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

Comment référenceriez-vous cet objet avec une URL, avec un nom significatif? Vous pouvez utiliser Article.id pour que l'URL ressemble à ceci:

www.example.com/article/23

Vous pouvez également référencer le titre de la manière suivante:

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

Le problème est que les espaces ne sont pas valides dans les URL. Ils doivent être remplacés par % 20 , ce qui est moche, ce qui rend ce qui suit:

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

Cela ne résout pas notre URL significative. Ne serait-ce pas mieux:

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

C'est une limace. vierge de 46 ans . Toutes les lettres sont réduites et les espaces sont remplacés par des tirets - . Voir l'URL de cette page Web même pour un exemple!

Autres conseils

Si je peux fournir un contexte historique:

Le terme "slug" a trait à la fonte du métal, dans ce cas-ci, la police a été créée. Chaque papier a ensuite régulièrement refondu et réusiné son usine de polices de caractères, car après de nombreuses impressions, elles sont devenues usées. Les apprentis comme moi ont commencé leur carrière là-bas et sont allés jusqu'au sommet (plus maintenant).

Les typographes devaient composer le texte d’un article de manière rétrograde avec des caractères principaux empilés de manière judicieuse. Donc, au moment de l’impression, les lettres seraient directement sur le papier. Tous les typographes pouvaient lire le journal en miroir aussi rapidement que celui imprimé. Par conséquent, les limaces (comme les escargots) ainsi que les histoires lentes (les dernières à être corrigées) attendaient sur le banc, uniquement identifiées par leurs lettres de poing, la plupart du temps généralement plus lisibles. Certains " chaud " des nouvelles nous attendaient sur le banc pour une éventuelle correction de dernière minute (papier du soir) avant le dernier montage et l'impression définitive.

Django a émergé des bureaux du journal Lawrence au Kansas. Où probablement un certain jargon d'impression persiste. Un amateur de django & sympathique-vieux-garçon-limace-originaire de France.

Comme un peu d'histoire, le terme "slug" vient du monde de l'édition de journaux.

C'est le nom informel donné à une histoire au cours du processus de production. Alors que l'histoire suit son chemin tortueux, du journaliste battu au rédacteur en chef, en passant par les "presses à imprimer", c'est le nom qui lui est référencé, par exemple, "Avez-vous corrigé ces erreurs dans" russia-cuts-europe-gas "histoire?".

Django l'utilise dans le cadre de l'URL pour localiser l'histoire, par exemple www.monsite.com/archives/russia-cuts-europe-gas .

De ici .

  

"Slug" est un terme de journal, mais quoi   cela signifie ici est le dernier morceau de la   URL Par exemple, une publication avec le   titre, “Un peu de Django” serait   devenir «bit-about-django»   automatiquement (vous pouvez, bien sûr,   changez-le facilement si vous n'aimez pas le   slug auto-généré).

Slug est un terme de journal. Un slug est une étiquette courte désignant quelque chose, contenant uniquement des lettres, des chiffres, des traits de soulignement ou des traits d'union. Ils sont généralement utilisés dans les URL (comme dans les documents django)

.

Un champ slug dans Django est utilisé pour stocker et générer des >

Le titre que vous avez entré ressemblait à ceci: > Qu'est-ce qu'un slug & # 8220; & # 8221; à Django?

& amp;

Lors du stockage dans une limace, les résultats classés dans      qu'est-ce-qu'un-slug-in-django (voir l'URL de cette page)

Slug est une étiquette courte adaptée aux URL pour un contenu spécifique. Il ne contient que des lettres, des chiffres, des caractères de soulignement ou des traits d'union. Les slugs sont généralement enregistrés avec le contenu respectif et transmis sous forme de chaîne URL.

Slug peut créer en utilisant SlugField

Ex:

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

Si vous voulez utiliser title comme slug, django a une fonction simple appelée slugify

from django.template.defaultfilters import slugify

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

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

S'il doit être unique, ajoutez unique = True dans le champ slug.

par exemple, à partir de l'exemple précédent:

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

Êtes-vous paresseux pour faire le processus slug? ne vous inquiétez pas, ce plugin vous aidera. django-autoslug

Aussi slug automatique chez django-admin. Ajouté à ModelAdmin:

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

Comme ici:

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

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

limace

Une étiquette courte pour quelque chose, contenant uniquement des lettres, des chiffres, des traits de soulignement ou des traits d'union. Ils sont généralement utilisés dans les URL. Par exemple, dans une URL d’entrée de blog typique:

https://www.djangoproject.com/weblog/2008/ avr / 12 / printemps / le dernier bit (printemps) est la limace.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top