Pagine per slug
Fa parte della sezione View basate su classi del percorso Django di Coddy. Lezione 6 di 18.
/jobs/7/ non dice nulla sul lavoro. /jobs/python-developer-brightline/ dice di cosa si tratta, alle persone e ai motori di ricerca. Quella parte leggibile è uno slug: parole in minuscolo unite da trattini. Ogni Job ne ha già uno nel campo slug.
Quando l'argomento dell'URL si chiama slug, una DetailView trova la riga il cui campo slug corrisponde. Entrambi i nomi possono cambiare. Un sito di ricette il cui percorso è "recipes/<slug:recipe_slug>/" comunica alla vista:
class RecipeDetailView(DetailView):
model = Recipe
slug_url_kwarg = "recipe_slug"slug_url_kwarg indica il nome dell'argomento dell'URL e slug_field quello del campo del modello; entrambi hanno come valore predefinito "slug". Rinomina l'argomento dell'URL senza comunicarlo alla vista e questa non troverà né un pk né uno slug e andrà in errore.
Sfida
FacileSposta le pagine delle offerte di lavoro dagli ID agli slug:
- In
jobs/urls.py, la routedetailusa lo slug dell'offerta di lavoro invece del suo pk. - In
job_list.html, ogni link passa lo slug dell'offerta di lavoro.
Premi Run e fai clic su Python Developer in /jobs/: l'indirizzo è /jobs/python-developer-brightline/.
Provalo tu
from django.urls import path
from . import views
app_name = "jobs"
urlpatterns = [
path("", views.HomeView.as_view(), name="home"),
path("about/", views.AboutView.as_view(), name="about"),
path("jobs/", views.JobListView.as_view(), name="list"),
path("jobs/<int:pk>/", views.JobDetailView.as_view(), name="detail"),
]
Tutte le lezioni di View basate su classi
Esercitati da solo: Playground Django