Menu
CoddyTech

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.

challenge icon

Sfida

Facile

Sposta le pagine delle offerte di lavoro dagli ID agli slug:

  • In jobs/urls.py, la route detail usa 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