Sie müssen sich nicht die Mühe machen, Slugs in Django zu erstellen. Implementieren Sie die automatische Slug-Generierung, um Zeit zu sparen und Ihren Arbeitsablauf zu optimieren.

Als Webentwickler ist die Optimierung der Benutzererfahrung Ihrer Web-App von entscheidender Bedeutung. Um das Benutzererlebnis und die Sichtbarkeit in Suchmaschinen zu verbessern, verwenden Sie benutzerfreundliche URLs mit Slugs in Django. Das Erstellen von URLs mit Slugs ist so einfach wie das Schreiben einer Funktion. So können Sie prägnante und beschreibende URLs generieren, die für Benutzer und Suchmaschinen leicht verständlich sind. Dies verbessert die Benutzerfreundlichkeit und Zugänglichkeit und verbessert gleichzeitig das Suchmaschinen-Ranking.

Die in diesem Artikel verwendeten Codebeispiele finden Sie hier GitHub-Repository.

Erstellen eines Django-Projekts

Django bietet verschiedene Methoden zum Generieren von Slugs und deren Verwendung auf Ihrer Website. Um verschiedene Möglichkeiten zur Implementierung von Slugs zu veranschaulichen, führt Sie dieses Tutorial durch die Erstellung einer einfachen Blog-Webanwendung.

instagram viewer

Bevor Sie ein Django-Projekt einrichten, Erstellen und aktivieren Sie eine virtuelle Umgebung um die notwendigen Abhängigkeiten zu installieren. Führen Sie nach der Aktivierung Ihrer virtuellen Umgebung die folgenden Schritte aus, um Ihr Projekt einzurichten:

  • Installieren Sie Django, indem Sie den Befehl pip in Ihrer Befehlszeile verwenden:
Pip Django installieren
  • Erstellen Sie ein Projekt mit dem django-admin Dienstprogramm. Dieses Tutorial wird verwendet project_core als Projektname.
django-admin startprojekt project_core .
  • Erstellen Sie eine App mit dem Namen Rezepte.
Python manage.py Startapp-Rezepte
  • Fügen Sie Ihre App zu den installierten Apps in Ihrem Projekt hinzu Einstellung.py Datei.
INSTALLED_APPS = [
'...'
'Rezepte',
]
  • Führen Sie Ihre Anwendung aus, indem Sie den folgenden Befehl in Ihr Befehlszeilentool eingeben:
python manage.py runserver
  • Navigieren Sie zu http://127.0.0.1:8000/ in Ihrem Browser. Sie sollten diese Seite sehen:
  • Konfigurieren Sie das URL-Muster in Ihrem Projekt urls.py Datei
aus django.urls importieren Pfad, einschließen

URL-Muster = [
'...',
Weg('', enthalten('Rezepte.URLs'))
]

Einen Slug in Django erstellen

Um in Django einen Slug zu generieren, müssen Sie ein Slug-Feld in Ihre Modelle einbinden. Befolgen Sie diese Schritte, um einen Slug in Django zu erstellen.

Erstellen Sie ein Modell

In deinem models.py Datei, erstellen Sie ein neues Modell und fügen Sie ein Slug-Feld hinzu. Hier ist ein Beispiel:

KlasseRezept(Modelle. Modell):
Name = Modelle. CharField (max_length=225, leer=FALSCH, null=FALSCH)
Zutaten = Modelle. TextFeld (leer=FALSCH, null=FALSCH)
Anweisungen = Modelle. TextFeld (leer=FALSCH, null=FALSCH)
date_created = Modelle. DateTimeField (auto_now=WAHR)
Schnecke = Modelle. SlugField (null = WAHR, leer=WAHR, einzigartig=WAHR)

Im obigen Beispiel das Modell Rezept enthält ein Feld mit dem Namen Schnecke. Der Schnecke Feld hat die Attribute, Null Und leer einstellen WAHR.

Wenden Sie Migrationen auf Ihr Modell an

Nachdem Sie ein Modell erstellt haben, sollten Sie den folgenden Befehl in Ihrem Befehlszeilentool ausführen, um die Tabelle in Ihrer Datenbank zu erstellen:

python manage.py makemigrations && python manage.py migrate

Der obige Befehl generiert zunächst eine Migrationsdatei und aktualisiert dann die Datenbank, indem er die Anweisungen in der Migrationsdatei ausführt.

Fügen Sie Daten zu Ihrer Datenbank hinzu

Registrieren Sie Ihr Modell, indem Sie Folgendes in Ihr eingeben admin.py Datei:

aus django.contrib importieren Administrator
aus .Modelle importieren Rezept

admin.site.register (Rezept)

Öffnen Sie als Nächstes Ihr Befehlszeilentool und erstellen Sie ein Superuser für Ihr Admin-Panel, indem Sie diesen Befehl ausführen:

python manage.py createsuperuser

Der obige Befehl führt Sie durch die in diesem Bild dargestellten Schritte:

Nach dem Erstellen eines Superuser, starten Sie Ihren lokalen Server mit dem folgenden Befehl:

python manage.py runserver

Sobald Ihr Server gestartet ist, sollten Sie zu navigieren http://127.0.0.1:8000/admin/, melden Sie sich mit den Daten an, die Sie zum Erstellen eines verwendet haben Superuser, und fügen Sie manuell einige Rezepte zu Ihrer Datenbank hinzu. Auf das Schneckenfeld sollte man achten.

Erstellen Sie Ansichten für Ihre App

Öffne dein Ansichten.py Datei und erstellen Sie zwei Ansichten für Ihre App. In der ersten Ansicht wird lediglich eine Übersicht über Ihre Rezepte angezeigt, während in der zweiten Ansicht weitere Details zu jedem Rezept angezeigt werden. Sie können diese Ansichten in Ihrem Projekt verwenden:

aus django.shortcuts importieren rendern, get_object_or_404
aus .Modelle importieren Rezept

# Listenansicht für Rezepte
defRezeptliste(Anfrage):
Rezepte = Recipe.objects.all()
zurückkehren rendern (Anfrage, 'Rezepte/Rezeptliste.html', {"Rezepte":Rezepte})

# Detailansicht für jedes Rezept
defRezept_Detail(Anfrage, Rezept_Slug):
Rezept = get_object_or_404(Rezept, slug=recipe_slug)
zurückkehren rendern (Anfrage, 'recipes/recipe_detail.html', {'Rezept': Rezept})

Im obigen Codeausschnitt ist die Rezeptliste view gibt die Liste aller Rezepte der Vorlage zurück. Andererseits ist die Rezept_Detail view gibt ein einzelnes Rezept an die Vorlage zurück. Diese Ansicht nimmt einen zusätzlichen Parameter namens auf Rezept_Schnecke die verwendet wird, um den Slug für ein bestimmtes Rezept zu erhalten.

Konfigurieren Sie URL-Muster für Ihre Ansichten

In Ihrem App-Verzeichnis (bzw Rezept Ordner), erstellen Sie eine Datei mit dem Namen urls.py um URL-Pfade für Ihre App hinzuzufügen. Hier ist ein Beispiel:

aus django.urls importieren Weg
aus .Ansichten importieren Rezeptliste, Rezeptdetail

URL-Muster = [
Weg('', Rezeptliste, Name='Rezept-Startseite'),
Weg('Rezept//', Rezeptdetails, Name='recipe_detail'),
]

Im obigen Codeausschnitt führt der zweite Pfad den Slug in die URL der Seite ein.

Erstellen Sie Vorlagen für Ihre App

Um die Rezepte im Browser anzuzeigen, erstellen Sie Vorlagen für Ihre Ansichten. Eine Vorlage sollte für die sein Rezeptliste Ansicht, während der andere für die sein sollte Rezept_Detail Sicht. Um den Slug in Ihrer Vorlage zu verwenden, befolgen Sie dieses Format: {% url 'view_name' Recipe.slug %}. Hier sind zwei Beispiele, die Sie in Ihrem Code verwenden können:

 Rezepte/Rezeptliste.html 
{% erweitert 'base.html' %}

{% Inhalt blockieren %}
<h1Klasse=„my-5 text-center“>Rezepteh1>
<Center>
<ulKlasse=„Listengruppe w-75“>
{% für Rezept in Rezepten %}
<liKlasse=„list-group-item my-3“>
<h2Klasse=„mb-3“>
<Ahref=„{% url ‚recipe_detail‘ Recipe.slug %}“>
{{ Rezeptname }}
A>
h2>
<PKlasse=„w-50“>
Zutaten: {{ Rezept.ingredients }}
P>
<PKlasse=„Text stummgeschaltet“>
Erstellt: {{ Recipe.date_created }}
P>
li>
{% leer %}
<liKlasse=„Listengruppenelement“>Keine Rezepte gefunden.li>
{% endfor %}
ul>
Center>
{% endblock %}

Die obige HTML-Vorlage listet alle Rezepte in Ihrer Datenbank auf und zeigt sie an Keine Rezepte gefunden wenn es keine Rezepte gibt. Für das Styling werden Bootstrap-Klassen verwendet. Sie können lernen, wie es geht Verwenden Sie Bootstrap mit Django. Die obige Vorlage sollte im Browser so aussehen:

 Rezepte/recipe_detail.html 
{% erweitert 'base.html' %}

{% Inhalt blockieren %}
<Center>
<divKlasse=„w-75“>
<h1Klasse=„mt-5 mb-4“>{{ Rezeptname }}h1>
<h3>Zutatenh3>
<P>{{ Rezept.Zutaten }}P>
<h3>Anweisungenh3>
<P>{{ Rezept.Anweisungen }}P>
<PKlasse=„Text stummgeschaltet“>Erstellt: {{ Recipe.date_created }}P>
div>
Center>
{% endblock %}

Die obige HTML-Vorlage gibt Details zu einem bestimmten Rezept zurück. Im Browser sollte die obige Seite so aussehen:

Sie werden feststellen, dass die URL jetzt den Slug enthält, den Sie für jedes Rezept in Ihrer Datenbank hinzugefügt haben. Wenn Sie nicht verstehen, wie das Vorlagensystem funktioniert, sollten Sie es zunächst lernen Vorlagenvererbung in Django Und Djangos MVT-Architektur.

Generieren Sie automatisch einen Slug in Django

Was Sie bei Slugs wirklich wollen, ist, dass sie automatisch basierend auf einem Feld in Ihrem Modell generiert werden. Dazu müssen Sie die ändern speichern() Methode in Ihrem Modell und legen Sie Ihre eigenen Regeln fest, bevor Objekte in der Datenbank gespeichert werden. Hier ist ein einfaches Beispiel, das Sie Ihrer Modellklasse hinzufügen können:

# Slugify importieren
aus django.template.defaultfilters importieren träge machen

defspeichern(self, *args, **kwargs):
Wennnicht self.slug:
self.slug = slugify (self.name)
super().save(*args, **kwargs)

Die obige Funktion prüft zunächst, ob ein Slug für das Modellobjekt vorhanden ist. Wenn kein Slug vorhanden ist, wird der verwendet träge machen Funktion, um eine aus dem Namensfeld im Modell zu generieren. Nach dem Überschreiben der speichern() Methode, öffnen Sie Ihr Admin-Panel und fügen Sie einige Rezepte hinzu. Dieses Mal müssen Sie das Slug-Feld nicht ausfüllen, da es automatisch ausgefüllt wird, sobald Sie Ihr Rezept speichern.

Wenn Sie zur Detailseite Ihres neu hinzugefügten Rezepts navigieren, werden Sie feststellen, dass die URL den Rezeptnamen als Slug verwendet.

Manchmal haben Sie mehrere Rezepte mit demselben Namen und das führt zu Fehlern in Ihrem Slug. Sie können dies beheben, indem Sie Ihrem Slug ein eindeutiges Element hinzufügen, beispielsweise das Erstellungsdatum. Hier ist ein einfaches Beispiel:

self.slug = slugify (self.name + "-" + str (self.date_created))

Verwenden Sie Slugs, um das URL-Erlebnis zu verbessern

Im Gegensatz zum guten Alten pkSlugs bieten viele Vorteile, einschließlich Flexibilität und Portabilität, da sie nicht an bestimmte URL-Identifikatoren wie den Primärschlüssel gebunden sind. Wenn Sie daher Ihre Datenbankstruktur ändern oder Ihre Daten migrieren, können Sie weiterhin konsistente URLs beibehalten. Slugs verbessern auch die SEO-Freundlichkeit.