Menu
CoddyTech

Páginas por slug

Parte de la sección Vistas basadas en clases del Journey de Django de Coddy. Lección 6 de 18.

/jobs/7/ no dice nada sobre el empleo. /jobs/python-developer-brightline/ indica de qué se trata, tanto a las personas como a los motores de búsqueda. Esa parte legible se llama slug: palabras en minúsculas unidas por guiones. Cada Job ya tiene uno en su campo slug.

Cuando el argumento de la URL se llama slug, una DetailView busca la fila cuyo campo slug coincide. Ambos nombres pueden cambiar. Una página de recetas cuya ruta es "recipes/<slug:recipe_slug>/" le indica a la vista:

class RecipeDetailView(DetailView):
    model = Recipe
    slug_url_kwarg = "recipe_slug"

slug_url_kwarg indica el nombre del argumento de la URL y slug_field, el del campo del modelo; ambos tienen "slug" como valor predeterminado. Cambia el nombre del argumento de la URL sin indicárselo a la vista y esta no encontrará ni un pk ni un slug y fallará.

challenge icon

Desafío

Fácil

Cambia las páginas de empleos para que usen slugs en lugar de identificadores:

  • En jobs/urls.py, la ruta detail recibe el slug del empleo en lugar de su pk.
  • En job_list.html, cada enlace pasa el slug del empleo.

Pulsa Run y haz clic en Python Developer en /jobs/: la dirección es /jobs/python-developer-brightline/.

Pruébalo tú mismo

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"),
]

Todas las lecciones de Vistas basadas en clases

Practica por tu cuenta: Playground de Django