Djangoのpathとre_pathの違いを完全解説!初心者でもわかるURLルーティング入門
生徒
「DjangoのURL設定で、pathとre_pathって2つありますよね。どっちを使えばいいんですか?」
先生
「URLの書き方によって、向いている方法が変わります。まずは、それぞれが何をするものかを知るところから始めましょう。」
生徒
「正規表現って言葉も出てきて、ちょっと不安です……。」
先生
「大丈夫です。パソコンを触ったことがない人でもイメージできるように、例え話を使って説明します。」
1. DjangoのURLルーティングとは?
DjangoのURLルーティングとは、「このURLにアクセスされたら、この処理を実行する」という対応表を作る仕組みです。Webサイトを建物に例えると、URLは住所、ビューは部屋の中で行われる作業です。正しい住所を案内しないと、目的の部屋にたどり着けません。
Djangoでは、このURLと処理の対応関係をurls.pyというファイルに書きます。ここで使われるのが、pathとre_pathです。
2. pathとは?初心者に一番おすすめの書き方
pathは、Djangoで一番よく使われるURL設定方法です。決まった形のURLを、直感的に書けるのが特徴です。英語が少し読めれば意味がわかるため、初心者向けとされています。
例えば「/hello/」にアクセスされたら、hello関数を実行する場合は、次のように書きます。
from django.urls import path
from . import views
urlpatterns = [
path('hello/', views.hello),
]
この書き方は、「helloという住所が来たら、この処理」という感覚で理解できます。難しいルールを覚えなくても使える点が、pathの大きなメリットです。
3. pathで値を受け取る仕組み
pathでは、URLの一部を変数として受け取ることもできます。例えば「/user/1/」「/user/2/」のように、数字が変わるURLです。
これは「変換器付きパスコンバータ」と呼ばれる仕組みを使います。難しそうに聞こえますが、「数字ですよ」「文字ですよ」とDjangoに伝えるだけです。
urlpatterns = [
path('user/<int:id>/', views.user_detail),
]
<int:id>は、「ここには数字が入り、それをidという名前で使う」という意味です。これだけで、安全にURLを扱えるのがpathの強みです。
4. re_pathとは?自由度が高いURL指定
re_pathは、正規表現という特別な書き方を使ってURLを指定します。正規表現とは、「文字の並び方のルール」を細かく指定できる方法です。
例えるなら、「この住所は、数字が3桁で、アルファベットが続く場合だけOK」といった細かい条件を出せる仕組みです。
from django.urls import re_path
urlpatterns = [
re_path(r'^product/[0-9]{3}/$', views.product),
]
このように、細かい条件を指定できる反面、見た目が難しくなりやすいのが特徴です。
5. 正規表現ってなに?超かんたん説明
正規表現とは、「文字のパターンを表す書き方」です。例えば「[0-9]」は数字1文字、「{3}」は3回繰り返す、という意味になります。
つまり「[0-9]{3}」は、「数字が3つ続く」という条件です。re_pathでは、この正規表現をURLの条件として使っています。
ただし、覚えることが多いため、初心者のうちは無理に使う必要はありません。
6. pathとre_pathの使い分けの考え方
基本的な考え方は、とてもシンプルです。ほとんどの場合はpathを使う、これが正解です。
re_pathは、「どうしてもpathでは表現できない複雑なURL」が必要なときだけ使います。例えば、古いシステムとの互換性が必要な場合などです。
SEOの観点でも、シンプルで読みやすいURLは評価されやすいため、path中心の設計がおすすめです。
7. 実務でよくあるURL設定の例
最後に、よく使われるpathの例を見てみましょう。記事詳細ページのURL設定です。
urlpatterns = [
path('blog/<int:pk>/', views.blog_detail),
]
このように、数字を受け取るURLはpathで十分対応できます。コードも読みやすく、後から見返したときにも理解しやすい構成になります。