DjangoのincludeでURLを分割管理する方法を完全ガイド!初心者でも迷わないURLルーティング入門
生徒
「DjangoでURLって書く場所がたくさんあって、どこを見ればいいのか分からなくなりました…」
先生
「Djangoでは、URLをひとつの場所に全部書くこともできますが、includeを使うと整理しながら管理できます。」
生徒
「includeって何をするものなんですか?」
先生
「別のURL設定ファイルを読み込むための仕組みです。ファイルを分けて管理できるので、とても分かりやすくなります。」
1. DjangoのURLルーティングとは?
DjangoのURLルーティングとは、ブラウザから入力されたURLと、実際に動く処理を結びつける仕組みです。たとえば、住所の番地を見ると、どの家か分かりますよね。URLも同じで、どのページを表示するかを決める目印のような役割をしています。
Djangoではurls.pyというファイルにURLのルールを書きます。初心者のうちは、このファイルがすべての入り口になります。
2. includeとは何をするための機能?
includeは、URLの設定を別のファイルに分けて管理するための機能です。最初はひとつのファイルでも問題ありませんが、ページが増えると中身がごちゃごちゃになります。
これは、ノートを一冊に全部書くのではなく、教科ごとにノートを分けるイメージです。Djangoのincludeを使うと、アプリごとにURLを整理できるようになります。
3. プロジェクト直下のurls.pyの役割
Djangoプロジェクトを作ると、最初からプロジェクト用のurls.pyがあります。ここは「全体の案内板」のような場所です。
このファイルでは、細かいURLの内容は書かず、「このURLは、このアプリに任せる」という指定をします。そのときに使うのがincludeです。
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('blog/', include('blog.urls')),
]
この例では、blog/から始まるURLは、blogアプリのURL設定を見るように指示しています。
4. アプリ側にurls.pyを作る理由
includeを使うためには、アプリ側にもurls.pyを作ります。これは、そのアプリ専用のURLノートです。
アプリごとにURLを分けることで、どこに何が書いてあるのか一目で分かるようになります。初心者の方ほど、この分け方に慣れておくと安心です。
from django.urls import path
from . import views
urlpatterns = [
path('', views.index),
path('about/', views.about),
]
5. includeを使ったURLの流れを図で考える
URLの動きを言葉で整理してみましょう。たとえば「/blog/about/」というURLが来たとします。
まずプロジェクトのurls.pyが確認され、「blog/」なのでblogアプリへ渡されます。次に、blogアプリのurls.pyを見て「about/」に対応する処理が呼ばれます。
このように、includeはURLをバケツリレーのようにつないでいく役割を持っています。
6. includeを使わない場合との違い
includeを使わずに、すべてのURLをひとつのファイルに書くこともできます。しかし、ページが増えるほど探すのが大変になります。
初心者のうちは少ないURLでも、後から増えることがほとんどです。最初からincludeで分けておくと、後で困りにくくなります。
7. よくある書き間違いと注意点
includeを使うときに多いのが、アプリ側にurls.pyを作り忘れることです。その場合、エラーが出てページが表示されません。
また、pathの文字列の最後のスラッシュにも注意が必要です。URLは文字が一つ違うだけで別物として扱われます。
path('shop/', include('shop.urls')),
8. includeを使うメリットを初心者目線で整理
includeを使う最大のメリットは、迷子にならないことです。URLが増えても、アプリごとに探せばいいので安心です。
また、作業の分担もしやすくなります。DjangoのURLルーティング入門として、includeはとても大切な考え方です。