Menu
CoddyTech

슬러그별 페이지

Coddy Django 여정의 클래스 기반 뷰 섹션에 포함된 레슨. 18개 중 6번째.

/jobs/7/는 해당 일자리에 대해 아무것도 알려 주지 않습니다. /jobs/python-developer-brightline/은 사람과 검색 엔진 모두에게 어떤 일자리인지 알려 줍니다. 읽을 수 있는 이 부분을 슬러그라고 합니다. 소문자 단어를 하이픈으로 연결한 것입니다. 모든 Job에는 이미 slug 필드에 슬러그가 있습니다.

URL 인수의 이름이 slug이면 DetailView는 slug 필드가 일치하는 행을 찾습니다. 두 이름은 모두 바꿀 수 있습니다. 라우트가 "recipes/<slug:recipe_slug>/"인 레시피 사이트는 뷰에 다음과 같이 알려 줍니다.

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

slug_url_kwarg는 URL 인수의 이름을 지정하고 slug_field는 모델 필드의 이름을 지정합니다. 두 값 모두 기본값은 "slug"입니다. 뷰에 알리지 않고 URL 인수의 이름을 바꾸면, 뷰는 pk도 슬러그도 찾지 못해 오류가 발생합니다.

challenge icon

챌린지

쉬움

채용 공고 페이지에서 ID 대신 슬러그를 사용하세요.

  • jobs/urls.py에서 detail 경로는 pk 대신 채용 공고의 슬러그를 받습니다.
  • job_list.html에서 각 링크는 채용 공고의 슬러그를 전달합니다.

Run을 누르고 /jobs/에서 Python Developer를 클릭하세요. 주소는 /jobs/python-developer-brightline/입니다.

직접 해보기

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

클래스 기반 뷰의 모든 레슨

직접 연습해 보세요: Django 플레이그라운드