名前付きURL
CoddyのDjangoジャーニー「Djangoの基礎」セクションの一部。レッスン 10/23。
ホームページから 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" なので、2つのアプリがそれぞれ home を持つことができます。reverse() は名前をアドレスに戻します。shop を shop/ の下に含める場合は、次のようになります。reverse("shop:cart") # "/shop/cart/"
reverse("shop:product", args=["mug"]) # "/shop/products/mug/""cart/" を "basket/" に変更すれば、その名前から組み立てられるすべてのアドレスに変更が反映されます。
チャレンジ
簡単menu/urls.pyで、app_name = "menu"を設定し、すべてのルートに名前を付けます。home、about、hours、contact、table、drink、orderです。- ホームページで、段落の後にリンク
<a href="...">About us</a>を追加します。そのアドレスはreverse("menu: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プレイグラウンド