ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
Django runserver とは
Django に標準同梱されている開発用 Web サーバ。python manage.py runserver 1 行で立ち上がり、ファイル変更を検知して自動再起動するため、開発体験が良いのが特徴です。
注意: あくまで開発用。性能・安全面の理由から本番では絶対に使わず、gunicorn / uvicorn + Nginx 等に置き換えます。
基本的な起動
# venv をアクティブにしてから
source venv/bin/activate
# 起動 (デフォルト: 127.0.0.1:8000)
python manage.py runserver
# 出力例:
# Watching for file changes with StatReloader
# Performing system checks...
# System check identified no issues (0 silenced).
# December 11, 2026 - 09:00:00
# Django version 5.0, using settings 'myproject.settings'
# Starting development server at http://127.0.0.1:8000/
# Quit the server with CONTROL-C.
# ブラウザで http://127.0.0.1:8000/ にアクセス
ポート・IP の変更
# ポート変更
python manage.py runserver 8080
# IP + ポート
python manage.py runserver 0.0.0.0:8000
# IPv6
python manage.py runserver [::]:8000
# 0.0.0.0 にすると同一 LAN の別端末からアクセス可能
# Mac の IP 確認:
ifconfig | grep "inet "
# または
ipconfig getifaddr en0
# → 192.168.1.42 等
# 他端末から
# http://192.168.1.42:8000/
ALLOWED_HOSTS の設定 (重要)
外部 IP で起動すると、デフォルトでは Django が拒否します。settings.py に追加が必要:
# settings.py
DEBUG = True
ALLOWED_HOSTS = [
'localhost',
'127.0.0.1',
'192.168.1.42',
'*.local', # Mac の Bonjour 名
'my-mac.local',
]
# DEBUG=True かつ ALLOWED_HOSTS が空の場合は
# localhost / 127.0.0.1 のみ自動許可
主な起動オプション
| オプション | 動作 |
|---|---|
--noreload | ファイル変更検知 / 自動再起動を無効化 |
--nothreading | シングルスレッドで実行 (デバッグ用) |
--insecure | DEBUG=False でも静的ファイルを配信 |
--ipv6 / -6 | IPv6 で待機 |
--verbosity 2 | 詳細ログ |
--settings=myproject.settings.dev | 使う設定モジュール指定 |
--pythonpath /path/to/proj | Python パス追加 |
自動リロードの仕組み
Django 2.2+ では StatReloader がデフォルト。.py ファイルのタイムスタンプを定期的に確認し、変更があれば再起動します。watchdog をインストールすると WatchmanReloader になり高速:
pip install watchdog
# 以降は WatchmanReloader が使われる (高速 + イベント駆動)
# 自動リロードを止めたい (デバッガ接続中など)
python manage.py runserver --noreload
# 監視対象を増やす場合は settings.py で BASE_DIR を確認
# テンプレートは .py じゃないので変更時はブラウザ F5 のみで OK
Mac 特有のトラブル
| 症状 | 原因 | 対処 |
|---|---|---|
| port 5000 が使えない | macOS AirPlay Receiver が占有 | システム設定 → 一般 → AirDrop と Handoff → AirPlay レシーバー OFF、または別ポート |
| 「ファイアウォール」確認ダイアログが出る | マシン外からのアクセス時 | 「許可」で OK |
| port already in use | 前回の runserver が残っている | lsof -i :8000 → kill |
| python ではなく python3 | macOS 標準 Python が古い | Homebrew で brew install python@3.12 |
| pip install で SSL error | システム Python の OpenSSL が古い | pyenv / brew の Python を使う |
# ポート占有チェック
lsof -i :8000
# COMMAND PID USER ... NAME
# Python 1234 taro ... TCP localhost:irdmi (LISTEN)
# プロセス停止
kill 1234
# もしくは
kill -9 1234
# Python 3 を Homebrew で
brew install python@3.12
brew link python@3.12
python3 --version
pip3 --version
# venv を作る
python3 -m venv venv
source venv/bin/activate
pip install django
django-admin startproject myproject
cd myproject
python manage.py migrate
python manage.py runserver
HTTPS 開発 (mkcert)
本番が HTTPS の場合、開発でも証明書を使えると Cookie の Secure 属性 や Service Worker のテストができます:
# mkcert で自己署名 CA を OS にインストール
brew install mkcert
mkcert -install
mkcert localhost 127.0.0.1 192.168.1.42
# runserver は HTTPS 非対応 → django-extensions の runserver_plus を使う
pip install django-extensions Werkzeug pyOpenSSL
# settings.py
INSTALLED_APPS += ['django_extensions']
# 起動
python manage.py runserver_plus --cert-file localhost+2.pem --key-file localhost+2-key.pem
# https://localhost:8000/
Django Channels (ASGI) のローカル起動
WebSocket / 非同期ビューを使うなら ASGI サーバが必要:
pip install channels daphne uvicorn
# settings.py
ASGI_APPLICATION = 'myproject.asgi.application'
# asgi.py を作成 (channels テンプレート参照)
# daphne で起動
daphne -p 8000 myproject.asgi:application
# uvicorn で起動 (HTTP のみで OK な場合)
uvicorn myproject.asgi:application --reload --host 0.0.0.0 --port 8000
本番への置き換え
runserver の代わりに使う本番構成の例:
[ブラウザ] ──HTTPS──> [Nginx] ──HTTP/proxy_pass──> [gunicorn] ──> [Django]
│
├─ /static/ → Nginx が直接配信
└─ /media/ → Nginx が直接配信# gunicorn 起動 (本番)
gunicorn myproject.wsgi:application \
--bind 127.0.0.1:8001 \
--workers 4 \
--timeout 60 \
--access-logfile - \
--error-logfile -
# 静的ファイル収集
python manage.py collectstatic --noinput
# ASGI (WebSocket 含む) なら uvicorn / daphne
uvicorn myproject.asgi:application \
--host 127.0.0.1 --port 8001 --workers 4
VS Code / PyCharm からの起動
// .vscode/launch.json
{
"version": "0.2.0",
"configurations": [
{
"name": "Django runserver",
"type": "python",
"request": "launch",
"program": "${workspaceFolder}/manage.py",
"args": ["runserver", "0.0.0.0:8000", "--noreload"],
"django": true,
"justMyCode": false
}
]
}
FAQ
Q: runserver が静的ファイルを返さない
A: DEBUG=False にすると停止します。開発中は DEBUG=True、または --insecure で強制配信。本番では Nginx が配信すべき。
Q: 同一 LAN の iPhone から見たい
A: runserver 0.0.0.0:8000 + ALLOWED_HOSTS に Mac の IP 追加 + ファイアウォール許可。iPhone で http://192.168.x.x:8000/。
Q: ホットリロードが効かない
A: ファイル監視数の上限に達している可能性。watchdog を入れる、もしくは node_modules 等の巨大ディレクトリを .gitignore に。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- SEO タイトル設計とキーワード配置完全ガイド (CTR / LLMO 対応) 2026-06-10 18:13:56
- Vue.js v-bind 完全ガイド (属性 / クラス / スタイル / Composition API) 2026-06-10 18:13:56
- Twitter (X) プラットフォーム完全ガイド 2026 (API / Premium / 競合) 2026-06-10 18:13:56
- PHP 変数スコープ完全ガイド (global / static / use / Arrow Function) 2026-06-10 18:13:56
- jQuery .height() 完全ガイド (innerHeight / outerHeight / box-sizing) 2026-06-10 18:13:56
- WordPress 主要独自関数完全ガイド (Loop / Enqueue / Hook / Conditional Tag) 2026-06-10 18:13:56
- jQuery 要素・値の削除完全ガイド (remove / detach / empty / val) 2026-06-10 18:13:56
- PHP コメント完全ガイド (// / # / /* */ / PHPDoc) 2026-06-10 18:13:56
- PHP 改行出力 (\n / PHP_EOL / nl2br) 完全ガイド 2026-06-10 18:13:56
- JavaScript 確認ダイアログ完全ガイド (confirm / alert / prompt / dialog) 2026-06-10 18:13:56
- UE5 スクリーンショット保存 (Scene Capture) 完全ガイド 2026-06-10 18:12:53
- UE5 Nav Mesh Bounds Volume 完全ガイド 2026-06-10 18:12:53
- EJS テンプレートの共通化 (include) 完全ガイド 2026-06-10 18:12:53
- UE5 カメラ傾き角度制限完全ガイド (Pitch Min/Max) 2026-06-10 18:12:53
- SQLite 完全ガイド (組み込み RDBMS) 2026-06-10 18:12:53
コメントを削除してもよろしいでしょうか?