DjangoでURLパラメータをビューで受け取る方法を完全解説!初心者でも安心して理解できる
生徒
「DjangoでURLに数字や文字が入っているページって、どうやって作っているんですか?」
先生
「DjangoではURLパラメータという仕組みを使って、URLの中の値をビューで受け取ることができます。」
生徒
「URLの中の値をプログラムで使えるんですか?」
先生
「はい。URLに含まれる数字や文字を受け取って、画面表示を変えたり処理を分けたりできます。」
生徒
「難しそうですが、パソコン初心者でも理解できますか?」
先生
「大丈夫です。住所や部屋番号の例えを使いながら、順番に説明していきましょう。」
1. DjangoのURLパラメータとは?
DjangoのURLパラメータとは、URLの中に含まれている値をプログラム側で受け取る仕組みです。たとえば「/user/1/」や「/blog/hello/」のように、URLの一部が変わるページがあります。この変わる部分がURLパラメータです。
現実世界で例えると、マンションの住所と部屋番号の関係に似ています。建物の住所は同じでも、部屋番号が違えば住んでいる人が変わります。Djangoでは、この部屋番号のような役割をURLパラメータが担っています。
2. URLパラメータを使うメリット
URLパラメータを使うと、同じビューを使いながら、表示内容を変えることができます。ページを大量に作らなくても、URLの値によって処理を切り替えられるため、管理がとても楽になります。
また、URLがシンプルで分かりやすくなるため、検索エンジンにも評価されやすくなります。DjangoとURLパラメータの組み合わせは、SEO対策としても重要なポイントです。
3. urls.pyでURLパラメータを設定する方法
Djangoでは、urls.pyというファイルでURLのルールを決めます。ここで、どの部分をパラメータとして受け取るかを指定します。
from django.urls import path
from . import views
urlpatterns = [
path('hello/<int:age>/', views.hello),
]
この例では、URLの中の数字をageという名前で受け取っています。intは整数という意味で、数字だけを受け取る設定です。
4. ビューでURLパラメータを受け取る仕組み
urls.pyで設定したパラメータは、ビュー関数の引数として自動的に渡されます。特別な設定をしなくても、関数の中で使えるようになります。
from django.http import HttpResponse
def hello(request, age):
return HttpResponse(f"{age}歳の方、こんにちは")
このように、関数の引数にageを書くだけで、URLの値をそのまま使えます。URLとビューが自然につながるのがDjangoの特徴です。
5. 文字列のURLパラメータを受け取る方法
数字だけでなく、文字列もURLパラメータとして受け取れます。ユーザー名やキーワードをURLに含めたいときに便利です。
urlpatterns = [
path('welcome/<str:name>/', views.welcome),
]
def welcome(request, name):
return HttpResponse(f"{name}さん、ようこそ")
strは文字列を意味します。URLに日本語やアルファベットを入れて表示を変えることもできます。
6. 複数のURLパラメータを使う方法
Djangoでは、URLパラメータを複数使うことも可能です。商品番号とカテゴリなど、複数の情報を同時に受け取れます。
urlpatterns = [
path('shop/<str:category>/<int:item_id>/', views.shop),
]
def shop(request, category, item_id):
return HttpResponse(f"{category}の商品番号は{item_id}です")
URLの順番とビューの引数の順番が対応している点が重要です。
7. URLパラメータが使われる実際の場面
URLパラメータは、ブログ記事の詳細ページ、ユーザー情報ページ、商品ページなど、ほぼすべてのWebサービスで使われています。DjangoでURLパラメータを理解すると、実際のWebアプリの仕組みが一気に身近になります。
URLを見るだけで、どんな情報が表示されるか想像できるようになるのも大きなメリットです。
8. 初心者がつまずきやすいポイント
初心者の方がよく間違えるのは、urls.pyとビューの引数名が一致していないケースです。名前が違うとエラーになります。また、intとstrの指定を間違えると、ページが表示されません。
エラーが出た場合は、URLの書き方とビュー関数の引数を落ち着いて確認することが大切です。