이름이 지정된 URL
Coddy Django 여정의 Django 기초 섹션에 포함된 레슨. 23개 중 10번째.
홈 페이지에서 About으로 연결해야 합니다. 모든 링크에 "/about/"을 입력하면 주소가 바뀌기 전까지는 작동하지만, 주소가 바뀌면 모든 링크가 깨집니다. 대신 각 경로에 이름을 지정하고 그 이름으로 주소를 만드세요. shop 앱의 urls.py:
app_name = "shop"
urlpatterns = [
path("cart/", views.cart, name="cart"),
path("products/<slug:slug>/", views.product, name="product"),
]app_name은 이름을 네임스페이스에 넣습니다. 전체 이름은 "shop:cart"이므로 두 앱 모두 home을 사용할 수 있습니다. reverse()는 이름을 다시 주소로 바꿉니다. shop을 shop/ 아래에 포함하면 다음과 같습니다.
from django.urls import reverse
reverse("shop:cart") # "/shop/cart/"
reverse("shop:product", args=["mug"]) # "/shop/products/mug/"뷰 안에서 reverse()를 호출하세요. views.py의 맨 위에서 호출하면 경로가 만들어지기 전에 실행됩니다.
"cart/"를 "basket/"으로 바꾸면 이름으로 만든 모든 주소가 그에 따라 바뀝니다.
챌린지
쉬움홈 페이지를 이름으로 About 페이지에 연결하세요.
menu/urls.py에서app_name을"menu"로 설정하고 각 경로의 이름을 해당 뷰와 같게 지정하세요:home,about,hours,contact,table,drink,order.menu/views.py에서django.urls로부터reverse를 가져오세요.home에서href가reverse("menu:about")인About us링크를 추가하세요.
‘About us’를 클릭하면 About 페이지가 열립니다.
직접 해보기
from django.urls import path
from . import views
urlpatterns = [
path("", views.home),
path("about/", views.about),
path("hours/", views.hours),
path("contact/", views.contact),
path("table/<int:number>/", views.table),
path("drinks/<slug:slug>/", views.drink),
path("order/", views.order),
]
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
Django 기초의 모든 레슨
직접 연습해 보세요: Django 플레이그라운드