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/ spiega 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 dirlo alla vista, e questa non trova né un pk né uno slug e va in errore.
Sfida
FacileSostituisci gli ID con gli slug nelle pagine delle offerte di lavoro.
- In
jobs/urls.py, fai in modo che la routedetailaccetti lo slug dell’offerta invece del suo pk. - In
job_list.html, fai in modo che ogni link passi lo slug dell’offerta.
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