Menu
CoddyTech

名前付き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/ の下に含めた場合は、次のようになります。

from django.urls import reverse

reverse("shop:cart")                    # "/shop/cart/"
reverse("shop:product", args=["mug"])   # "/shop/products/mug/"

ビューの中で reverse() を呼び出します。views.py の先頭で呼び出すと、ルートが存在する前に実行されてしまいます。

"cart/" を "basket/" に変更すると、その名前から組み立てられるすべてのアドレスに変更が反映されます。

challenge icon

チャレンジ

簡単

ホームページを名前で About にリンクします。

  1. menu/urls.py で、app_name を "menu" に設定し、各ルートに対応するビューの名前を付けます:home、about、hours、contact、table、drink、order。
  2. 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),
]
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

Djangoの基礎のすべてのレッスン

自分で練習してみよう: Djangoプレイグラウンド