Djangoの動的URLの作り方を完全ガイド!初心者でもわかるURLルーティング入門
生徒
「Webサイトって、どうやってページごとに内容を変えているんですか?URLが違うだけで表示が変わるのが不思議です」
先生
「それはURLの中身を見て、プログラムが判断しているからです。Djangoでは“動的URL”という仕組みを使います」
生徒
「動的URLって難しそうです。パソコンを触ったことがなくても理解できますか?」
先生
「大丈夫です。住所や番号札に例えながら、ゆっくり説明していきましょう」
1. DjangoのURLルーティングとは?
DjangoのURLルーティングとは、URLと処理内容を結びつける仕組みです。URLとは、インターネット上の住所のようなものです。たとえば「/shop/」や「/blog/」といった文字列を見て、どの画面を表示するかを決めています。Djangoではこの役割をurls.pyというファイルが担当します。初心者の方は、まず「URLと画面をつなぐ案内表」だと考えると理解しやすくなります。
2. 動的URLとは何かをやさしく理解する
動的URLとは、URLの一部が毎回変わる仕組みです。たとえば「/item/1/」「/item/2/」のように、数字だけが変わるURLを見たことがあるかもしれません。この数字は商品番号や記事番号のようなものです。Djangoでは、この変わる部分を受け取って処理を変えることができます。これにより、同じプログラムでもたくさんのページを表示できます。
3. <int:id> の意味を超かんたんに説明
<int:id>は「ここには数字が入ります」という目印です。intは整数、つまり1や2のような数字を意味します。idは名前で、あとからプログラムで使うためのラベルです。番号札を受け取って、その番号の人を呼び出すイメージをすると分かりやすいです。難しい英単語に見えますが、「数字用の箱」くらいの感覚で大丈夫です。
4. urls.pyで動的URLを作ってみよう
それでは実際に動的URLを定義してみます。まずはurls.pyに書く基本形を見てください。
from django.urls import path
from . import views
urlpatterns = [
path('item/<int:id>/', views.item_detail),
]
この設定により、/item/1/ や /item/10/ のようなURLが使えるようになります。数字の部分がidとしてビューに渡されます。
5. ビューで数字を受け取る仕組み
次に、受け取った数字をビューで使います。ビューとは、画面に何を表示するかを決める処理です。関数の引数としてidを受け取ります。
from django.http import HttpResponse
def item_detail(request, id):
return HttpResponse(f"商品番号は {id} です")
ここでは、受け取った数字をそのまま表示しています。URLの数字が変わると、表示される内容も変わることが分かります。
6. 文字列を使った動的URLの例
動的URLでは数字だけでなく文字も使えます。たとえば名前やカテゴリです。その場合はstrを使います。
path('hello/<str:name>/', views.hello),
def hello(request, name):
return HttpResponse(f"こんにちは、{name}さん")
/hello/taro/ のようにアクセスすると、名前に応じた表示ができます。人に話しかけるような感覚で理解すると覚えやすいです。
7. なぜ動的URLが必要なのか
もし動的URLがなければ、ページごとにURLをすべて手作業で作る必要があります。それはとても大変です。動的URLを使えば、一つの仕組みで何百、何千ものページを扱えます。ブログの記事ページや商品ページでよく使われている理由はここにあります。DjangoのURLルーティングは、初心者でもWebの仕組みを実感できる重要なポイントです。
8. 初心者がつまずきやすいポイント
よくある間違いは、URLの書き方とビューの引数の名前が合っていないことです。<int:id>と書いたら、ビューでもidという名前を使います。また、最後のスラッシュの有無も重要です。小さな違いですが、動かない原因になりやすいので注意しましょう。失敗しても慌てず、URLとコードを一つずつ確認することが大切です。