「PythonでWebアプリを作りたいけど、何からはじめればいいのかわからない…」
そんな悩みを持つ人におすすめなのが、Django(ジャンゴ)というフレームワークです。
Djangoは、Pythonで開発されたWebフレームワークの中でも特に人気があり、初心者からプロまで幅広くつかわれています。
この記事では、Djangoの特徴から基本的なつかい方、学習ステップまでをわかりやすく紹介します。
Djangoってなに?

説明
DjangoはPython製のWebアプリケーションフレームワークで、2005年にリリースされました。
フレームワークとは、「アプリを作るための土台や道具がセットになったもの」です。
家を建てるときの「基礎工事や設計図」のようなものだと考えてください。
Djangoの特徴
「電池付き」フレームワーク
- 認証システム(ログイン機能)
- 管理画面
- ルーティング(URLの処理)
- フォーム処理
- セキュリティ対策
これらがすべて最初から入っているので、すぐにWebアプリ開発をはじめられます。
MTV アーキテクチャ
Djangoは「MTV」という設計思想を採用しています:
要素 | 役割 | 例 |
---|---|---|
Model(モデル) | データの管理 | ユーザー情報、記事データ |
Template(テンプレート) | 見た目の設計 | HTML、CSS |
View(ビュー) | 処理のロジック | データを取得して表示 |
この分離により、コードが整理され、メンテナンスしやすくなります。
Djangoをつかっている有名サービス
- Instagram:写真共有SNS
- Pinterest:画像ブックマークサービス
- Spotify:音楽ストリーミング(一部)
- YouTube:動画共有(一部)
このように、大規模なサービスでも安心してつかえる実績があります。
Djangoのインストールと環境準備
事前準備
Pythonのインストール確認
まず、あなたのパソコンにPythonがインストールされているか確認しましょう。
python --version
Python 3.8以上が推奨です。インストールされていない場合は、Python公式サイトからダウンロードしてください。
Djangoのインストール
ステップ1:仮想環境の作成(推奨)
# 仮想環境を作成
python -m venv myenv
# 仮想環境を有効化(Windows)
myenv\Scripts\activate
# 仮想環境を有効化(Mac/Linux)
source myenv/bin/activate
ステップ2:Djangoのインストール
pip install django
ステップ3:インストール確認
django-admin --version
バージョン番号が表示されれば、インストール成功です。
最初のDjangoプロジェクトを作ってみよう

プロジェクトの作成
ステップ1:プロジェクトを作成
django-admin startproject mysite
これで「mysite」という名前のプロジェクトフォルダが作成されます。
ステップ2:プロジェクトフォルダに移動
cd mysite
ステップ3:開発サーバーを起動
python manage.py runserver
ステップ4:ブラウザで確認
ブラウザで http://127.0.0.1:8000/
を開くと、Djangoのウェルカム画面が表示されます。
プロジェクトの構造
作成されたフォルダ構造は以下のようになります:
mysite/
manage.py # Djangoのコマンドを実行するファイル
mysite/
__init__.py
settings.py # プロジェクトの設定
urls.py # URLの設定
wsgi.py # サーバー設定
asgi.py # 非同期サーバー設定
最初のアプリケーションを作ってみよう
説明
Djangoでは「プロジェクト」の中に「アプリケーション」を作ります。
- プロジェクト:Webサイト全体
- アプリケーション:特定の機能(ブログ、ユーザー管理など)
アプリケーションの作成
ステップ1:ブログアプリを作成
python manage.py startapp blog
ステップ2:アプリをプロジェクトに登録
mysite/settings.py
を開いて、INSTALLED_APPS
に追加:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'blog', # ここに追加
]
Hello World を表示してみよう
ステップ1:ビュー関数を作成
blog/views.py
を開いて編集:
from django.http import HttpResponse
def hello(request):
return HttpResponse("Hello, Django World!")
def index(request):
return HttpResponse("""
<h1>私のブログへようこそ!</h1>
<p>これはDjangoで作成したページです。</p>
""")
ステップ2:ブログ用のURLを設定
blog/urls.py
を新規作成:
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
path('hello/', views.hello, name='hello'),
]
ステップ3:メインのURLに接続
mysite/urls.py
を編集:
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('blog.urls')),
]
ステップ4:サーバーを再起動して確認
python manage.py runserver
http://127.0.0.1:8000/
→ ブログのトップページhttp://127.0.0.1:8000/hello/
→ Hello Worldページ
データベースとモデルの基本

説明
Djangoでは、Pythonのクラスでデータベースのテーブル(モデル)を定義できます。
これにより、SQLを書かずにデータベースを操作できます。
ブログ記事のモデルを作ってみよう
ステップ1:モデルを定義
blog/models.py
を編集:
from django.db import models
from django.utils import timezone
class Post(models.Model):
title = models.CharField(max_length=200, verbose_name="タイトル")
content = models.TextField(verbose_name="内容")
created_at = models.DateTimeField(default=timezone.now, verbose_name="作成日時")
updated_at = models.DateTimeField(auto_now=True, verbose_name="更新日時")
def __str__(self):
return self.title
class Meta:
verbose_name = "記事"
verbose_name_plural = "記事一覧"
ステップ2:データベースに反映
# マイグレーションファイルを作成
python manage.py makemigrations
# データベースに反映
python manage.py migrate
ステップ3:管理者ユーザーを作成
python manage.py createsuperuser
ユーザー名、メールアドレス、パスワードを入力します。
ステップ4:管理画面に登録
blog/admin.py
を編集:
from django.contrib import admin
from .models import Post
@admin.register(Post)
class PostAdmin(admin.ModelAdmin):
list_display = ['title', 'created_at', 'updated_at']
list_filter = ['created_at']
search_fields = ['title', 'content']
ステップ5:管理画面で記事を作成
- サーバーを起動:
python manage.py runserver
http://127.0.0.1:8000/admin/
にアクセス- 作成したユーザーでログイン
- 「記事」から新しい記事を作成
ブログ記事を表示してみよう
テンプレートの作成
ステップ1:テンプレートフォルダを作成
blog/
templates/
blog/
index.html
detail.html
ステップ2:一覧ページのテンプレート
blog/templates/blog/index.html
を作成:
<!DOCTYPE html>
<html>
<head>
<title>私のブログ</title>
<style>
body { font-family: Arial, sans-serif; margin: 40px; }
.post { border: 1px solid #ddd; padding: 20px; margin: 20px 0; }
.title { color: #333; }
.date { color: #666; font-size: 14px; }
</style>
</head>
<body>
<h1>私のブログ</h1>
{% for post in posts %}
<div class="post">
<h2 class="title">{{ post.title }}</h2>
<p class="date">{{ post.created_at|date:"Y年m月d日 H:i" }}</p>
<p>{{ post.content|truncatewords:30 }}</p>
<a href="{% url 'post_detail' post.id %}">続きを読む</a>
</div>
{% empty %}
<p>まだ記事がありません。</p>
{% endfor %}
</body>
</html>
ステップ3:詳細ページのテンプレート
blog/templates/blog/detail.html
を作成:
<!DOCTYPE html>
<html>
<head>
<title>{{ post.title }} - 私のブログ</title>
<style>
body { font-family: Arial, sans-serif; margin: 40px; }
.date { color: #666; font-size: 14px; }
.content { line-height: 1.6; margin: 20px 0; }
</style>
</head>
<body>
<h1>{{ post.title }}</h1>
<p class="date">{{ post.created_at|date:"Y年m月d日 H:i" }}</p>
<div class="content">
{{ post.content|linebreaks }}
</div>
<a href="{% url 'index' %}">← 一覧に戻る</a>
</body>
</html>
ビューの更新
blog/views.py
を更新:
from django.shortcuts import render, get_object_or_404
from .models import Post
def index(request):
posts = Post.objects.all().order_by('-created_at')
return render(request, 'blog/index.html', {'posts': posts})
def post_detail(request, post_id):
post = get_object_or_404(Post, id=post_id)
return render(request, 'blog/detail.html', {'post': post})
URLの更新
blog/urls.py
を更新:
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
path('post/<int:post_id>/', views.post_detail, name='post_detail'),
]
これで、ブログの一覧ページと詳細ページが完成しました!
よくある質問

Q:DjangoとFlaskのちがいは?
Django
- 多機能(電池付き)
- 大規模開発向け
- 学習コストが高め
Flask
- シンプル・軽量
- 小規模開発向け
- 学習コストが低め
Q:データベースは何をつかえる?
Djangoは以下のデータベースに対応:
- SQLite(開発時の標準)
- PostgreSQL(本番環境推奨)
- MySQL
- Oracle
Q:本番環境にデプロイするには?
主なデプロイ先:
- Heroku:簡単デプロイ
- AWS:本格的なクラウド環境
- さくらのクラウド:国内サービス
- Railway:新しいPaaS
まとめ
Djangoの魅力
- 電池付き:すぐに開発できる環境が整っている
- 管理画面が強力:自動でデータベースをGUI管理できる
- 拡張性が高い:大規模開発にも対応可能
- セキュリティが堅牢:セキュリティ対策が標準で組み込まれている
- コミュニティが活発:情報が豊富でサポートが充実
コメント