パスコンバーター
CoddyのDjangoジャーニー「Djangoの基礎」セクションの一部。レッスン 6/23。
カフェのテーブルにはそれぞれQRコードがあり、各コードには専用のページが必要です。一部にパスコンバーターを使えば、1つのルートですべてに一致させられます。カレンダーでは、次の2つを使うことがあります。
path("calendar/<int:year>/<int:month>/", views.calendar),山かっこで囲まれた部分がコンバーターです。型、コロン、名前で構成されます。intは整数に一致し、その値をPythonのintに変換します。ビューは、それぞれの値をその名前の引数として受け取ります。
def calendar(request, year, month):
return HttpResponse(f"<h2>{month} / {year}</h2>")/calendar/2026/3/の場合、Djangoはcalendar(request, year=2026, month=3)を呼び出します。/calendar/next/3/のようにコンバーターに一致しないアドレスでは、404「ページが見つかりません」が返され、ビューは実行されません。
チャレンジ
簡単各テーブルに専用のページを用意しましょう。
menu/urls.pyで、/table/5/、/table/12/、およびほかの任意の整数に一致するルートを1つ追加します。views.tableに割り当てます。menu/views.pyで、ビューtableを書きます。2つ目の引数にはコンバーターの名前が入ります。テーブル5の場合、<h1>Table 5</h1>を返します。
/table/12/を開くと、Table 12が表示されます。
自分で試してみよう
from django.urls import path
from . import views
urlpatterns = [
path("", views.home),
path("about/", views.about),
path("hours/", views.hours),
path("contact/", views.contact),
]
Djangoの基礎のすべてのレッスン
自分で練習してみよう: Djangoプレイグラウンド