カテゴリ: Django 更新日: 2026/03/14

Djangoのurls.pyをアプリごとに分割する方法を初心者向けに徹底解説

Djangoのurls.pyをアプリごとに分割する方法
Djangoのurls.pyをアプリごとに分割する方法

先生と生徒の会話形式で理解しよう

生徒

「DjangoでWebサイトを作っているんですが、urls.pyって1つのファイルに全部書くんですか?」

先生

「最初は1つでも動きますが、機能が増えると管理が大変になります。そのため、アプリごとにurls.pyを分ける方法があります。」

生徒

「アプリごとに分けるって、初心者でもできますか?」

先生

「大丈夫です。仕組みを順番に理解すれば、パソコンを触ったことがない人でもイメージできます。」

1. DjangoのURLルーティングとは何か

1. DjangoのURLルーティングとは何か
1. DjangoのURLルーティングとは何か

DjangoのURLルーティングとは、ブラウザで入力されたURLと、実際に処理を行うプログラムを結びつける仕組みです。たとえば「/login/」にアクセスしたらログイン画面を表示する、といった対応表のような役割を持っています。この対応表を管理しているのがurls.pyです。

初心者向けに例えると、URLルーティングは建物の案内板のようなものです。入口で行き先を見て、どの部屋に行くかを案内してくれます。Djangoでは、この案内板をプログラムで書いています。

2. urls.pyを分割しない場合の問題点

2. urls.pyを分割しない場合の問題点
2. urls.pyを分割しない場合の問題点

Djangoを学び始めたばかりの頃は、プロジェクト直下のurls.pyにすべてのURLを書くことが多いです。しかし、アプリが増えてくるとURLの数も増え、1つのファイルが長くなります。

その結果、どのURLがどの機能なのか分かりにくくなり、修正ミスも起きやすくなります。これはノートに全教科の内容を全部まとめて書いているような状態で、後から見返すのが大変になります。

3. アプリごとにurls.pyを分ける考え方

3. アプリごとにurls.pyを分ける考え方
3. アプリごとにurls.pyを分ける考え方

Djangoでは「アプリ」という単位で機能を分けて開発します。ログイン機能、商品管理機能、お問い合わせ機能などを、それぞれ別のアプリとして作るのが一般的です。

URLも同じ考え方で、アプリごとに管理すると見通しが良くなります。学校の教科ごとにノートを分けるようなイメージです。Djangoはこの構成を前提として作られているため、公式でも推奨されています。

4. プロジェクト側urls.pyの基本設定

4. プロジェクト側urls.pyの基本設定
4. プロジェクト側urls.pyの基本設定

まず、プロジェクト直下にあるurls.pyで、各アプリのurls.pyを読み込む設定を行います。ここではincludeという仕組みを使います。includeは「別のURL設定を読み込む」という意味です。


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アプリ側のurls.pyに任せる、という流れになります。

5. アプリ側にurls.pyを作成する

5. アプリ側にurls.pyを作成する
5. アプリ側にurls.pyを作成する

次に、アプリのフォルダの中にurls.pyを新しく作成します。これは手動でファイルを作ります。最初は空のファイルでも問題ありません。


from django.urls import path
from . import views

urlpatterns = [
    path('', views.index, name='index'),
]

ここでは、空のURLにアクセスしたときにindexというビューを呼び出す設定をしています。ドットから始まるimportは「同じアプリ内」を意味します。

6. ビューとの関係を理解しよう

6. ビューとの関係を理解しよう
6. ビューとの関係を理解しよう

URLルーティングは、ビューとセットで考えると理解しやすくなります。ビューとは、実際に画面を表示したり、処理を行ったりする部分です。


from django.http import HttpResponse

def index(request):
    return HttpResponse("ブログのトップページです")

このように、URL → ビュー → 表示内容、という流れで処理が進みます。urls.pyはその入口を担当しています。

7. includeを使うメリットとSEOの関係

7. includeを使うメリットとSEOの関係
7. includeを使うメリットとSEOの関係

includeを使ってURLを分割すると、URL構造が整理され、意味のあるURLを作りやすくなります。これは検索エンジンにとっても理解しやすく、SEO対策としても有利です。

たとえば「/blog/」「/shop/」のように役割が分かれたURLは、ユーザーにも検索エンジンにも親切です。DjangoのURL設計は、Webサイトの品質向上にもつながります。

8. 初心者がつまずきやすいポイント

8. 初心者がつまずきやすいポイント
8. 初心者がつまずきやすいポイント

初心者がよく間違えるのが、アプリ側のurls.pyを作ったのに、プロジェクト側でincludeを書き忘れるケースです。この場合、URLにアクセスしてもページが表示されません。

また、アプリ名のスペルミスや、viewsの関数名の間違いもよくある原因です。エラーが出たときは、落ち着いてファイル名と名前を1つずつ確認することが大切です。

カテゴリの一覧へ
新着記事
New1
Python
Pythonのセットと辞書のキーの関係を理解しよう!初心者でもわかる基本解説
New2
Python
Pythonのセットに複数の要素をまとめて追加する方法(update()の使い方)を初心者向けに解説!
New3
Django
Djangoのurls.pyをアプリごとに分割する方法を初心者向けに徹底解説
New4
Flask
Flaskで静的ファイルをキャッシュ設定!ページ読み込みを高速化する完全ガイド
人気記事
No.1
Java&Spring記事人気No1
Python
Pythonでトランザクション処理を実装する方法を完全解説!commit・rollbackで安全なSQL操作
No.2
Java&Spring記事人気No2
Flask
Flaskとは何か?初心者向けにできること・特徴・インストール手順までやさしく解説
No.3
Java&Spring記事人気No3
Python
Pythonで仮想環境(venv)を作る方法!初心者向けに環境構築をステップ解説
No.4
Java&Spring記事人気No4
Python
Pythonの文字列を1文字ずつ処理する方法!for文やlist化の活用例
No.5
Java&Spring記事人気No5
Python
Pythonの文字列から一部を抽出する方法!スライスを使った基本的な切り出し方
No.6
Java&Spring記事人気No6
Flask
FlaskでAPIを作る基本!初心者向けに仕組みと特徴をやさしく解説
No.7
Java&Spring記事人気No7
Flask
Flask‑RESTfulでREST APIを構築する手順まとめ!初心者向けにやさしく解説
No.8
Java&Spring記事人気No8
Python
Pythonのコーディング規約(PEP8)とは?初心者でもわかる書き方の基本ルール