- Djangoって何から始めればいいの?
- MTVの構造がよくわからない
- 認証やAPI連携、本番デプロイまで一通り学びたい
このような疑問にお答えします。
Djangoは、Pythonで書けるWebフレームワークです。モデル・認証・管理画面といった、Webアプリに必要な機能が最初から揃っています。
このガイドでは、Djangoの基本的な考え方から、実際に画面を表示するところまでをステップ順に解説します。
記事後半には、モデル・認証・API・デプロイなど、テーマ別の詳細ガイドへのロードマップも用意しました。「どこから学べばいいかわからない」という悩みは、これで解消できるはずです。
Djangoとは何か
Djangoは、Pythonで書かれたWebフレームワークです。データベースとのやり取り、URL設計、管理画面、認証など、Webアプリでほぼ必ず必要になる機能が標準で用意されています。
Djangoの設計はMTV(Model・Template・View)という3つの役割に分かれています。
| 要素 | 役割 |
|---|
| Model | データベースの構造・データのやり取り |
| Template | 画面に表示するHTML |
| View | リクエストを受けてModelとTemplateをつなぐ処理 |
一般的なMVCと呼び方が違うだけで、考え方はほぼ同じです。「データ」「画面」「つなぐ処理」の3つに分かれている、とだけ覚えておけば十分です。
なぜDjangoを選ぶのか
正直なところ、バックエンドの言語やフレームワークは、使い慣れたものを自由に選べばいいと思っています。他に慣れている言語があるなら、そちらで作っても何の問題もありません。
僕がDjangoを選んでいるのは、単純にPythonに慣れているからです。認証・管理画面・ORMといった機能が最初から揃っているので、Pythonが書けるなら学習コストは低めです。
Djangoを始める前の準備
環境構築の細かい手順は、後半のロードマップ内の記事にまとめています。ここでは全体の流れだけ押さえておきます。
大まかな流れは、仮想環境の作成 → Djangoのインストール → プロジェクトの作成 → アプリの作成の4ステップです。プロジェクトが「サイト全体の入れ物」、アプリが「機能ごとの部品」という関係になっています。
Djangoの基本的な考え方
僕自身、Djangoが最初に触ったWebフレームワークだったので、正直はじめは全部につまずきました。
中でも馴染めなかったのが、フレームワーク特有の「お作法」を、途中の理屈を全部理解する前に「そういうものだ」と割り切って受け入れることでした。「なぜこのファイルにこう書くのか」を最初から全部理解しようとすると、手が止まってしまいます。
Djangoには、settings.pyで設定を管理する、urls.pyでルーティングを書く、views.pyで処理を書く、といった「決まった置き場所」があります。まずはこの型をなぞって動かしてみて、理屈は後から追いつけばいいというくらいの気持ちで進めるのがおすすめです。
はじめての画面を表示してみよう
理屈の説明が続いたので、実際に画面を表示するところまでやってみましょう。urls.pyとviews.pyだけで完結する、最小構成の例です。
Python# views.py
from django.http import HttpResponse
def hello(request):
return HttpResponse("Hello, Django!")
Python# urls.py
from django.urls import path
from . import views
urlpatterns = [
path("hello/", views.hello),
]
「/hello/」にアクセスすると、views.pyのhello関数が呼ばれ、urls.pyがそのURLとの対応を管理する。これがDjangoのリクエスト処理の基本形です。実際のアプリではここにModelやTemplateが加わりますが、骨格はこの2ファイルの関係と変わりません。
Django学習ロードマップ
基本が掴めたら、次のステップに進みましょう。以下はCFXLOGのDjango関連記事一覧です。テーマ別にまとめているので、気になるテーマから読み進めてください。
Step 1:プロジェクトを立ち上げる
あわせて読みたい
【Django】プロジェクトとアプリの設定方法まとめ
Djangoの開発を始めるための準備が知りたい! 普通にPythonでコーディングするのと違って、Djangoの開発では細々した準備が必要です。 内容をざっと列挙すると以下の通…
あわせて読みたい
【Django】settings.pyの僕的ベストプラクティスをご紹介
settings.pyのベストプラクティスが知りたい! 本記事では、僕が個人開発で使っているsettings.pyの内容を公開します。 ぜひ参考にしてみてください。 【Django】settin…
Step 2:モデル・データベースを扱う
あわせて読みたい
【Django】モデル・マイグレーション完全ガイド|フィールド設計からリレーションまで徹底解説
Djangoに触り始めた頃、モデルの前にまずデータベースそのものをよく知りませんでした。 モデルのクラス定義自体はPythonなので読めます。ただ、フィールドの引数に何を…
あわせて読みたい
【Django】QuerySetの使い方まとめ【ORM操作を一気に理解するチートシート】
Django の QuerySet 操作を逆引きで調べたい! このような方に向けて、Django でよく使う操作を中心にまとめました。 各メソッドの説明はジャンルに分けてありますので…
あわせて読みたい
【Django】最新の年齢を取得し続ける2つの方法
ユーザーの年齢は常に最新の値が欲しい! このような方に向けて書きました。 本記事では最新の年齢を取得し続けるための方法を解説します。 年齢をデータベースで年齢を…
あわせて読みたい
【Django × Docker】開発中のマイグレーション不整合問題はどう対処する?DBを消す場合・消さない場合の…
Django 開発でよく発生するのが、マイグレーションとデータベースの不整合。特に Docker でデプロイしながら開発していると、 ローカルでマイグレーションをやり直した …
Step 3:ビュー・URLルーティングを書く
あわせて読みたい
【Django】ビュー・URLルーティング完全ガイド|FBV・CBV・URLconfを徹底解説
Djangoのビューには、関数で書くFBV(Function Based View)と、クラスで書くCBV(Class Based View)の2種類があります。 最初にCBVを見たとき、正直よくわかりません…
Step 4:認証を実装する
あわせて読みたい
【Django】カスタムユーザーモデルの作り方【認証】
カスタムユーザーモデルの概念がどうしても理解できない 標準のUserモデルからカスタムユーザーモデルへの変更方法が知りたい Djangoには標準でログインなどの認証に使…
あわせて読みたい
django-allauthのデフォルト機能だけで高度な認証機能を実装する方法
django-allauthで認証を実装したい まずは基本の実装方法が知りたい Djangoはデフォルトでも認証機能を実装していますが、より高度な認証を行うにはdjango-allauthを使…
あわせて読みたい
Google認証後に管理画面にログインできない【django-allauth】
Google認証で作ったユーザーで管理ページにログインしたい! このような方に向けて書きました。 Google認証でユーザー作成すると、次の理由でDjangoの管理サイトにログ…
あわせて読みたい
【Django】ログイン・ログアウト機能と表示するページの制御方法
Django に認証機能を実装したい 認証状況ごとに表示するページを変えたい Djangoでは標準でログイン・ログアウト関連のモジュールが実装されています。 そのため、簡単…
Step 5:テンプレート・フロントと繋ぐ
あわせて読みたい
【Django】テンプレート・静的ファイル完全ガイド|継承・フィルタ・CSS/JS管理まで解説
Djangoのテンプレートを初めて触ったとき、普通のHTMLよりも少しオブジェクト指向的な考え方が必要で、理解するまで少し時間がかかりました。 変数を埋め込むだけならま…
あわせて読みたい
【簡単】Djangoで基本のグローバルメニューを作る方法
Djangoでグローバルメニューを作りたい! CSSファイルってどこに配置したら良いの? このような疑問にお答えします。 テンプレートHTMLを作り込もうとした場合に、最初…
あわせて読みたい
【TailwindCSS】 django-tailwind のセットアップ方法と使い方
Django で TailwindCSS を使いたい セットアップ手順は? 簡単な使い方が知りたい 最近の求人を見渡していると、技術スタックで TailwindCSS を求められることが増えて…
あわせて読みたい
DjangoテンプレートでGoogle Analytics(GA4)を実装する方法【本番のみ有効化】
GA4を環境変数でON/OFF制御したい 本番環境だけで計測したい メンテナンスコストを低く抑えたい このような方に向けて書きました。 Django プロジェクトに Google Analy…
あわせて読みたい
Django開発で「CSSが反映されない問題」を確実に解決する最小構成
スマホ実機・本番環境でもキャッシュを100%破壊する方法をご紹介します。 Django でスタイルを調整していると、CSS が反映されないことはよく遭遇します。 特にスマホ(…
Step 6:REST APIを公開する
あわせて読みたい
Django REST framework で CORS 対策をする方法
Django REST framework で CORS エラーが出ている… このような場合の対策をお伝えします。 Django REST framework(以下「DRF」とします)では、外部ライブラリを使うこ…
あわせて読みたい
【Basic, Token, Session】デフォルトで用意された3つの認証クラス入門【Django REST Framework】
Django REST Framework(DRF)には、デフォルトで3つの認証機能が搭載されています。 認証機能は認証クラス(authentication classes)で設定し、リクエストが誰からのも…
あわせて読みたい
APIのバージョン管理(/api/v1/…)設計方法【Django REST framework】
既存クライアントに影響を与えずにAPIの仕様を変更したい 複数バージョンをどのように分けて設計・管理すればよいか分からない 将来的な拡張を見据えて、最初から正しい…
あわせて読みたい
【Django REST framework】画像ファイルアップロード機能の実装方法
Django REST framework で画像アップロード機能を実装したい! Django REST framework(以下、「DRF」とします)で画像アップロード機能を実装するには、いくつかのステ…
投稿が見つかりません。
投稿が見つかりません。
Step 7:テストを書く
あわせて読みたい
【Django】ユニットテストを書く方法【単体テスト】
Django のテストコードってどう書けばいい?? このような疑問にお答えします。 ユニットテストは「単体テスト」とも呼ばれ、クラスや関数などの狭い範囲のプログラムが…
Step 8:運用を効率化する
あわせて読みたい
【初心者でも簡単】Djangoカスタムコマンド入門
ルーティン作業を自動化したい カスタムコマンドを実装したい カスタムコマンドを使うと、あらかじめ書いたスクリプトを manage.py 経由で実行できます。 例えば、以下…
あわせて読みたい
Django の djLint のセットアップ方法と使い方
Django のリンター djLint を使ってみたい 設定方法をサクッと知りたい djLint は Django でフォーマッター兼リンターとして使える便利なライブラリです。つまり Django…
Step 9:本番にデプロイする
あわせて読みたい
【お試し】エックスサーバーVPSにDjangoプロジェクトをデプロイする方法
DjangoをVPSにデプロイする流れが知りたい! このようなDjango学習中の方に向けて書きました。 どうせDjangoを勉強するなら、サーバーにデプロイしてみたいですよね。 …
あわせて読みたい
GunicornでDjangoプロジェクトをデプロイする方法【Nginx使用】
Gunicornの設定が難しすぎる… 動かすコマンドは? 実践的な設定方法を教えて! このような方に向けて書きました。 中小規模のDjangoアプリのデプロイによく使われるアプ…
あわせて読みたい
【Django + Let’s Encrypt】CerbotでHTTPS化するための手順
ブラウザで警告が表示されてる 暗号化されていないので不安 ユーザー管理しているのでちゃんとしておきたい サイトを公開後にまず取り組むべきは、HTTPS化です。 HTTPS…
あわせて読みたい
【Django】SECRET_KEYを再生成する方法
まちがえてSECRET_KEYをGitHubにプッシュしてしまった! Django標準の機能でSECRET_KEYを生成したい! このような疑問にお答えします。 SECRET_KEYは、以下の条件を満た…
あわせて読みたい
Djangoでサイトマップ(sitemap.xml)を実装する方法まとめ
検索エンジンに正しくクロールしてもらうために、Django が標準機能でサイトマップを生成する方法を整理します。 使うのはdjango.contrib.sitemaps です。 Django側の準…
あわせて読みたい
【Django】Google AdSense の ads.txt をルートパスで配信する方法
Google AdSense を利用する時には、ads.txt をドメイン直下(/ads.txt)で公開する必要があります。 Django でサイトを構築していると、次のようなことで迷うことも多い…
こんなことをしたい → どの記事を読む?逆引きナビ
「困りごとは決まっているけど、どこから読めばいいかわからない」という方向けに、トラブル対応系の記事をまとめました。
開発サーバーが「ポートが使用中」と言われる
あわせて読みたい
【完全保存版】Djangoで「That port is already in use」エラーが出たときの対処法まとめ
Django 開発中に python manage.py runserver を実行したら、次のようなエラーに遭遇しましたか? BashError: That port is already in use.Error: That port is alread…
リダイレクトの実装で迷っている
あわせて読みたい
【完全版】Djangoで使うリダイレクトの種類と判断基準・実装方法まとめ
URL 設計を途中で変更したい /old/ から /new/ に誘導したい pk URL を slug にリプレースしたい Webアプリを運用していると、こんな場面は必ず出てきます。 そのときに…
ローカル環境を外部に一時公開したい
あわせて読みたい
【Django】ngrokを使ってローカル環境を外部公開する方法
ローカルの開発サーバーに外部からアクセスしたい Webhook のテストがしたい python manage.py runserver をすると開発用のローカルサーバーが立ち上がるのはご存知のと…
まとめ
Djangoは、モデル・認証・管理画面といったWebアプリの土台がひと通り揃ったフレームワークです。このガイドで学んだことをまとめると、次のとおりです。
- DjangoはModel・Template・Viewの3役割で構成される
- 言語・フレームワークは使い慣れたものを選べばよく、Djangoである必然性は特にない
- フレームワーク特有の「お作法」は、理屈より先に一旦受け入れて動かしてみるのが近道
- urls.pyとviews.pyの対応関係が、Djangoのリクエスト処理の骨格
- 各テーマの詳細は上のロードマップから学べる
実際に触ってみると、Djangoって意外と簡単だと感じてもらえるはずです。まずはプロジェクトを立ち上げるところから始めてみてください。
あわせて読みたい
【Django】プロジェクトとアプリの設定方法まとめ
Djangoの開発を始めるための準備が知りたい! 普通にPythonでコーディングするのと違って、Djangoの開発では細々した準備が必要です。 内容をざっと列挙すると以下の通…
コメント