Nu trebuie să vă băgați de cap pentru a crea slug-uri în Django. Implementați generarea automată de slug pentru a economisi timp și pentru a vă simplifica fluxul de lucru.

În calitate de dezvoltator web, optimizarea experienței utilizatorului aplicației dvs. web este crucială. Pentru a îmbunătăți experiența utilizatorului și vizibilitatea motorului de căutare, utilizați adrese URL ușor de utilizat cu slug-uri în Django. Crearea de adrese URL cu slug-uri este la fel de simplă ca și scrierea unei funcții, permițându-vă să generați adrese URL concise și descriptive, ușor de înțeles pentru utilizatori și motoarele de căutare. Acest lucru îmbunătățește gradul de utilizare și accesibilitatea, sporind în același timp pozițiile în motoarele de căutare.

Exemplele de cod folosite în acest articol pot fi găsite în acest articol Depozitul GitHub.

Crearea unui proiect Django

Django oferă mai multe metode pentru a genera slug-uri și a le folosi pe site-ul dvs. web. Pentru a ilustra diferite moduri de implementare a melcilor, acest tutorial vă va ghida prin construirea unei aplicații web simple pentru blog.

instagram viewer

Înainte de a configura un proiect Django, creați și activați un mediu virtual pentru a instala dependențele necesare. După activarea mediului virtual, urmați acești pași pentru a vă configura proiectul:

  • Instalați Django utilizând comanda pip din linia de comandă:
pip install django
  • Creați un proiect utilizând django-admin utilitate. Acest tutorial va folosi miez_proiect ca denumirea proiectului.
django-admin startproject project_core .
  • Creați o aplicație numită Rețete.
rețete python manage.py startapp
  • Adăugați aplicația dvs. la aplicațiile instalate în proiectul dvs setare.py fişier.
INSTALLED_APPS = [
'...'
'Rețete',
]
  • Rulați aplicația dvs. tastând următoarea comandă în instrumentul de linie de comandă:
python manage.py runserver
  • Navigheaza catre http://127.0.0.1:8000/ în browserul dvs. Ar trebui să vezi această pagină:
  • Configurați modelul URL în proiectul dvs urls.py fişier
din django.urls import cale, include

urlpatterns = [
'...',
cale('', include(„rețete.urls”))
]

Crearea unui Slug în Django

Pentru a genera un slug în Django, trebuie să includeți un câmp slug în modelele dvs. Urmați acești pași pentru a crea un slug în Django.

Creați un model

În dumneavoastră modele.py fișier, creați un nou model și includeți un câmp slug. Iată un exemplu:

clasăReţetă(modele. Model):
nume = modele. CharField (lungime_max =225, gol=Fals, nul=Fals)
ingrediente = modele. TextField (blank=Fals, nul=Fals)
instrucțiuni = modele. TextField (blank=Fals, nul=Fals)
data_created = modele. DateTimeField (auto_now=Adevărat)
slug = modele. SlugField (null = Adevărat, gol=Adevărat, unic=Adevărat)

În exemplul de mai sus, modelul Reţetă conține un câmp numit melc. The melc câmpul are atributele, nul și gol setat la Adevărat.

Aplicați migrații modelului dvs

După crearea unui model, ar trebui să rulați următoarea comandă în instrumentul de linie de comandă pentru a crea tabelul în baza de date:

python manage.py makemigrations && python manage.py migra

Comanda de mai sus va genera mai întâi un fișier de migrare și apoi va actualiza baza de date executând instrucțiunile din interiorul fișierului de migrare.

Adăugați date în baza dvs. de date

Înregistrați-vă modelul introducând următoarele în fișierul dvs admin.py fişier:

din django.contrib import admin
din .modele import Reţetă

admin.site.register (Rețetă)

Apoi, deschideți instrumentul de linie de comandă și creați un superutilizator pentru panoul dvs. de administrare, rulând această comandă:

python manage.py createsuperuser

Comanda de mai sus vă va ghida prin pașii descriși în această imagine:

După crearea unui superutilizator, porniți serverul local cu următoarea comandă:

python manage.py runserver

Odată ce serverul dvs. pornește, ar trebui să navigați la http://127.0.0.1:8000/admin/, conectați-vă cu detaliile pe care le-ați folosit pentru a crea un superutilizatorși adăugați manual câteva rețete în baza de date. Ar trebui să acordați atenție câmpului de melci.

Creați vizualizări pentru aplicația dvs

Deschide-ți vederi.py fișier și creați două vizualizări pentru aplicația dvs. Prima vizualizare va afișa pur și simplu o prezentare generală a rețetelor dvs., în timp ce a doua va oferi mai multe detalii despre fiecare rețetă. Puteți utiliza aceste vederi în proiectul dvs.:

din django.comenzi rapide import randați, get_object_or_404
din .modele import Reţetă

# Vizualizare listă pentru rețete
deflista_rețete(cerere):
retete = Recipe.objects.all()
întoarcere randa (cerere, „rețete/listă_rețete.html”, {"Rețete":Rețete})

# Vizualizare detaliată pentru fiecare rețetă
defdetaliu_rețetă(cerere, recipe_slug):
reteta = get_object_or_404(Reteta, slug=recipe_slug)
întoarcere randa (cerere, „rețete/rețetă_detail.html”, {'reţetă': reteta})

În fragmentul de cod de mai sus, lista_rețete vizualizare returnează lista cu toate rețetele la șablon. Pe de altă parte, cel detaliu_rețetă vizualizarea returnează o singură rețetă la șablon. Această vizualizare preia un parametru suplimentar numit recipe_slug care este folosit pentru a obține melcul pentru o anumită rețetă.

Configurați modele URL pentru vizualizările dvs

În directorul aplicației dvs. (sau reţetă folder), creați un fișier numit urls.py pentru a adăuga căi URL pentru aplicația dvs. Iată un exemplu:

din django.urls import cale
din .vizualizări import lista_rețete, detaliu_rețete

urlpatterns = [
cale('', lista_rețete, nume=„rețetă-acasă”),
cale('reţetă//', detaliu_rețetă, nume=„detaliu_rețetă”),
]

În fragmentul de cod de mai sus, a doua cale introduce slug-ul în adresa URL a paginii.

Creați șabloane pentru aplicația dvs

Pentru a afișa rețetele în browser, creați șabloane pentru vizualizările dvs. Un șablon ar trebui să fie pentru lista_rețete vedere în timp ce celălalt ar trebui să fie pentru detaliu_rețetă vedere. Pentru a utiliza melcul în șablon, urmați acest format, {% url 'view_name' recipe.slug %}. Iată două exemple pe care le puteți folosi în codul dvs.:

 recipes/listă_rețete.html 
{% extins 'base.html' %}

{% block content %}
<h1clasă=„my-5 text-center”>Rețeteh1>
<centru>
<ulclasă=„list-grup w-75”>
{% pentru rețetă în rețete %}
<liclasă=„articol-grup-lista-my-3”>
<h2clasă="mb-3">
<Ahref=„{% url 'recipe_detail' recipe.slug %}”>
{{ recipe.name }}
A>
h2>
<pclasă="w-50">
Ingrediente: {{ recipe.ingredients }}
p>
<pclasă=„text dezactivat”>
Creat: {{ recipe.date_created }}
p>
li>
{% gol %}
<liclasă="articol-grup-lista">Nu au fost găsite rețete.li>
{% endfor %}
ul>
centru>
{% endblock %}

Șablonul HTML de mai sus va enumera toate rețetele din baza de date și va afișa Nu au fost găsite rețete daca nu exista retete. Folosește clase Bootstrap pentru stil. Puteți învăța cum utilizați Bootstrap cu Django. Șablonul de mai sus ar trebui să arate astfel în browser:

 recipes/recipe_detail.html 
{% extins 'base.html' %}

{% block content %}
<centru>
<divclasă="w-75">
<h1clasă="mt-5 mb-4">{{ recipe.name }}h1>
<h3>Ingredienteh3>
<p>{{ recipe.ingredients }}p>
<h3>Instrucțiunih3>
<p>{{ recipe.instructions }}p>
<pclasă=„text dezactivat”>Creat: {{ recipe.date_created }}p>
div>
centru>
{% endblock %}

Șablonul HTML de mai sus returnează detalii despre o anumită rețetă. Pe browser, pagina de mai sus ar trebui să arate astfel:

Veți observa că adresa URL conține acum orice slug pe care l-ați adăugat în baza de date pentru fiecare rețetă. Dacă nu înțelegeți cum funcționează sistemul de șabloane, mai întâi ar trebui să învățați moștenire șablon în Django și Arhitectura MVT a lui Django.

Generați automat un Slug în Django

Cu melci, ceea ce doriți cu adevărat este să le generați automat pe baza unui câmp din modelul dvs. Pentru a face acest lucru, trebuie să modificați Salvați() metoda din modelul dvs. și specificați propriile reguli înainte ca obiectele să fie salvate în baza de date. Iată un exemplu simplu pe care îl puteți adăuga la clasa dvs. de model:

# import slugify
din django.template.defaultfilters import slege

defSalvați(self, *args, **kwargs):
dacănu self.slug:
self.slug = slugify (self.name)
super().save(*args, **kwargs)

Funcția de mai sus verifică mai întâi dacă există un slug pentru obiectul model. Dacă nu există slug, folosește slege funcția de a genera unul din câmpul de nume din model. După depășirea Salvați() metoda, deschideți panoul de administrare și adăugați câteva rețete. De data aceasta, nu trebuie să completați câmpul slug, deoarece va fi completat automat odată ce vă salvați rețeta.

Dacă navigați la pagina de detalii a rețetei nou adăugate, veți vedea că adresa URL folosește numele rețetei ca slug.

Uneori, veți avea mai multe rețete cu același nume și asta va provoca erori în melcul dumneavoastră. Puteți remedia acest lucru adăugând un element unic la slug-ul dvs., cum ar fi data creării. Iată un exemplu simplu:

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

Utilizați Slugs pentru a îmbunătăți experiența URL

Spre deosebire de vechiul bun pk, slug-urile oferă multe avantaje, inclusiv flexibilitate și portabilitate, deoarece nu sunt legate de identificatori URL specifici, cum ar fi cheia primară. Prin urmare, dacă modificați structura bazei de date sau migrați datele, puteți menține în continuare adrese URL consecvente. Limacii sporesc, de asemenea, compatibilitatea cu SEO.