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/ 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.

challenge icon

Sfida

Facile

Sostituisci gli ID con gli slug nelle pagine delle offerte di lavoro.

  1. In jobs/urls.py, fai in modo che la route detail accetti lo slug dell’offerta invece del suo pk.
  2. 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