パスコンバーター
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つ設定します。menu/views.pyで、テーブル5に対して<h1>Table 5</h1>を返すビューtableを作成し、ほかのテーブルについても同様にします。
/table/abc/は404を返します。Runを押すと、プレビューで/table/5/が開きます。自分で試してみよう
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プレイグラウンド