結論:Djangoは「URLを振り分ける・HTMLを組み立てる・データベースを読み書きする」という、Webアプリで毎回必要になる面倒ごとをまとめて引き受けてくれる道具です。学ぶ順番は「ビュー → URL → テンプレート → フォーム → モデル(ORM) → 全部つなげて1画面」の6段で、環境構築より先にブラウザで動くDjangoを触ったほうが挫折しません。
「Django 入門 何から」で検索すると、たいてい最初に出てくるのは pip install django と django-admin startproject です。ところが未経験者がいちばん脱落するのはまさにここ、コードを1行も書く前の環境構築です。この記事では、順番を入れ替えて「Djangoが何をしてくれるのか」を先に体験する道筋をまとめます。
Djangoは何を引き受けてくれるのか
Webアプリを自作すると、どんなサービスでも同じ仕事が必ず発生します。Djangoはその定番作業をひととおり用意したフレームワークです(部品集であるライブラリとの違いは ライブラリとフレームワーク を参照)。
| Webアプリで必要な仕事 | Djangoの担当 |
|---|---|
| どのURLに来たら何を返すか決める | ルーティング(urlpatterns) |
| 処理を書いて応答を返す | ビュー(関数やクラス) |
| データを埋め込んだHTMLを作る | テンプレート |
| 入力を受け取り、正しさを検査する | フォーム |
| データベースを読み書きする | モデル/ORM |
| 管理者がデータを編集する画面 | 管理サイト(Django Admin) |
| ログイン・パスワード管理 | 認証機能 |
とくに大きいのが下の2つです。モデルを1クラス書くだけでテーブルの定義になり、SQLを直接書かなくてもデータを保存・検索できます。この仕組みが ORM です。そして管理サイトは、数行の設定で「データを一覧・追加・編集できる画面」が出来上がります。個人開発でこれを自作するとかなりの時間がかかるので、Djangoが最初から持っている価値は大きいです。
Django自体の全体像は、読み物の WebアプリとDjango ― リクエストからレスポンスまで で先につかめます。
MTV:リクエストが返ってくるまでの流れ
Djangoの設計は MTV(Model・Template・View) と呼ばれます。名前は違いますが、やっていることはシンプルです。
- ブラウザが
/posts/3/のようなURLにアクセスする - URL設定が「このURLなら、このビューを呼ぶ」と振り分ける
- ビューが呼ばれ、必要ならモデルでデータベースからデータを取る
- ビューがテンプレートにデータを渡し、HTMLを組み立てる
- 出来上がったHTMLがレスポンスとしてブラウザに返る
この流れは、最小のDjangoを1画面ぶんだけ書いてみるといちばん早く腑に落ちます。ビュー1つだけの はじめてのビュー ― Hello, Django はブラウザ上でそのまま実行できる回で、リクエストを送るところまでその場で試せます。続けて URLとビューを結ぶ ― urlpatterns と path で振り分けの書き方、テンプレートとは ― 変数を埋め込む で {{ 変数 }} の埋め込みを触れば、3〜5の流れが手の感覚として残ります。
最後に3つを合流させるのが 一覧ページ ― モデル×ビュー×テンプレート です。ここまで来ると「Webアプリを作った」と言える形になります。
Pythonの基礎はどこまで必要か
Djangoを始める前に必要なPythonは、意外と少ないです。目安は次の範囲です。
- 変数・数値・文字列(変数 ― 値に名前をつける)
- リストと辞書(リスト・辞書 ― キーと値のペア)
ifとfor(if / elif / else・for文とrange)- 関数の定義と引数(関数の定義・引数と戻り値)
- クラスの読み方(クラスの基礎)
これで十分です。ビューは「リクエストを受け取ってレスポンスを返す関数」ですし、モデルは「クラスを1つ書くだけ」なので、関数とクラスの読み書きができれば前に進めます。デコレータや非同期処理は、必要になった時点で戻れば問題ありません。Python全体の進め方は Python独学ロードマップ にまとめています。
HTMLも最低限は要ります。テンプレートは結局HTMLだからです。とはいえ見出し・段落・リンク・フォームが読めれば足りるので、HTML/CSSコースの最初の回 から数レッスンで十分間に合います。
環境構築でつまずく前に、ブラウザで先に体験する
独学が止まる原因の上位が「動く環境を作れない」です。Pythonのバージョン、仮想環境、pip のパス、ModuleNotFoundError。ここで数日消えると、Djangoを1行も書かないまま気持ちが折れます。
そこで順番を逆にします。まずブラウザで動くDjangoを触り、「作れそうだ」という感触を得てから、自分のPCに環境を作る。当サイトの Djangoコース は全32レッスンで、ブラウザ内でDjango本体を動かし、テストクライアント(django.test.Client)で自分のアプリにリクエストを送って結果を確かめられる回が中心です。インストールも登録も不要で、無料で開いてすぐ実行できます。
学習用に1ファイル構成をとっているぶん、本物のプロジェクト構成は読み物として別に用意されています。
- 本物のプロジェクト構成 ― startproject と manage.py(読み物)
- マイグレーション ― makemigrations と migrate(読み物)
- 管理サイト ― Django Admin(読み物)
- ユーザー認証 ― ログインの仕組み(読み物)
- デプロイ ― 本番公開の勘どころ(読み物)
つまり「手を動かす部分はブラウザで」「PC上でしか確かめられない部分は読み物で」という分担です。手触りを得たあとで自分の環境を作れば、同じエラーに当たっても「何をしようとしているか」が分かっているぶん復帰が早くなります。仮想環境と pip の考え方は 仮想環境と pip にあります。
ORMの裏側にはSQLがある
モデルを書くと、Djangoは裏でSQLを組み立ててデータベースに投げています。モデルとは ― データベースを Python で書く でクラスを1つ書き、絞り込みと並び替え ― filter / order_by や テーブルをつなぐ ― ForeignKey まで進むと、Post.objects.filter(...) という書き方が SELECT ... WHERE ... に対応していることが見えてきます。
ORMは便利ですが、SQLをまったく知らないままだと「なぜこのページだけ遅いのか」が分からなくなります。並行して、あるいは後追いで次を触っておくと理解が一段深くなります。
- SELECT ― 列を取り出す、WHERE ― 条件で絞り込む
- JOIN ― 2つの表を結びつける(ForeignKeyの正体)
- データ型と CREATE TABLE(モデルのフィールドが何になるか)
どちらもブラウザ内のSQLiteで実際にクエリを実行できます。データベースを何から学ぶかは データベース入門は何から も参考にしてください。
つまずきやすいところ
1. import でこける。 Djangoに限らずPython学習の最初の壁です。名前のつづりや、そもそもインストールされていないケースが大半です。ModuleNotFoundError の読み方は ModuleNotFoundError ― import に失敗した にまとめています。エラー全般は Pythonのエラー逆引き を開けば、メッセージから原因を引けます。
2. POSTフォームが403で弾かれる。 Djangoはフォーム送信に {% csrf_token %} を要求します。これは CSRF という攻撃を防ぐ仕組みで、外し方を探すのではなく正しく付けるのが答えです。POSTとCSRF ― 送信を安全に受ける で実際に動かして確かめられます。
3. 入力チェックを自力で書きすぎる。 「メールアドレスの形式か」「必須項目が空でないか」といった検査は、Djangoフォーム ― forms.Form とバリデーション が引き受けてくれます。自作する前にフォームの機能を見に行くと、書く量が大きく減ります。
4. 保存したあとブラウザを更新すると二重登録される。 フォームを受け取ったら保存してリダイレクトする、という定石で防ぎます。登録フォームで作る ― フォーム→保存→リダイレクト がそのパターンそのものです。
5. エラーメッセージを読まずに検索してしまう。 最後の1行に答えが書いてあることが多いです。エラーメッセージの読み方 を先に読んでおくと独学の速度が変わります。
おすすめの進め方
- ビューとURL:Hello, Django → urlpatterns と path → 動的なURL ― パスパラメータ
- テンプレート:変数を埋め込む → 条件と繰り返し → テンプレート継承
- フォーム:GET フォーム → POSTとCSRF → forms.Form とバリデーション
- モデルとORM:モデルとは → create / all / get → filter / order_by → ForeignKey
- つなげて1つのアプリに:一覧ページ → 詳細ページ → 登録フォームで作る
- PC上の話を読む:プロジェクト構成 → マイグレーション → 管理サイト → デプロイ
作りたいものが「一覧と詳細があって、フォームから登録できるサイト」なら、5まで到達した時点で骨格は完成しています。あとは画面を増やすだけです。その先の地図は 次に学ぶこと ― クラスベースビューと DRF にあります。
PHPやフロントエンドとの関係
Djangoはサーバー側の道具です。ブラウザ側とサーバー側の役割分担は フロントエンドとバックエンドの違い で整理できます。同じサーバー側の選択肢として PHP入門 もあり、HTMLから始めたいなら Web制作独学は何から が入口です。
次に読む
- Djangoコース(全32レッスン) — ブラウザ内でDjangoを動かす。無料・登録不要
- Pythonコース — Djangoに必要な文法をひととおり
- HTML/CSSコース — テンプレートを書くための土台
- SQL データ操作(DML)コース — ORMの裏側にあるSQL
- Pythonのエラー逆引き — 詰まったときのメッセージ検索
- Python独学ロードマップ — Python全体の学習順序