Menu
CoddyTech

Páginas por Slug

Parte da seção Views baseadas em classes do Journey de Django da Coddy. Lição 6 de 18.

/jobs/7/ não diz nada sobre a vaga. /jobs/python-developer-brightline/ informa o que ela é, para as pessoas e para os mecanismos de busca. Essa parte legível é um slug: palavras em letras minúsculas unidas por hífens. Todo Job já tem um no campo slug.

Quando o argumento da URL se chama slug, uma DetailView encontra a linha cujo campo slug corresponde. Os dois nomes podem mudar. Um site de receitas cuja rota é "recipes/<slug:recipe_slug>/" informa à view:

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

slug_url_kwarg nomeia o argumento da URL, e slug_field, o campo do modelo; ambos têm "slug" como valor padrão. Renomeie o argumento da URL sem avisar a view, e ela não encontrará nem um pk nem um slug e falhará.

challenge icon

Desafio

Fácil

Mude as páginas de vagas de IDs para slugs:

  • Em jobs/urls.py, a rota detail recebe o slug da vaga em vez do seu pk.
  • Em job_list.html, cada link passa o slug da vaga.

Pressione Run e clique em Python Developer em /jobs/: o endereço é /jobs/python-developer-brightline/.

Experimente você mesmo

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 as lições de Views baseadas em classes

Pratique por conta própria: Playground de Django