Menu
CoddyTech

パスコンバーター

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が返され、ビューは実行されません。

challenge icon

チャレンジ

簡単

すべてのテーブルにページを用意しましょう:

  • 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プレイグラウンド