🌊
# 6.2 Django 側の初期セットアップ
前回で GitHub にリポジトリを作り、雛形の準備が整った。
ここからは Django 側の環境構築 を行う。
今回は最初から .env
を使った実務的な設定管理 を導入し、管理ユーザー作成まで進める。
1. 仮想環境の作成と有効化
# backend ディレクトリを作成
mkdir backend
cd backend
# 仮想環境を作成
python -m venv venv
# 仮想環境を有効化(PowerShell)
.\venv\Scripts\Activate.ps1
2. 必要パッケージのインストール
pip install django psycopg2-binary python-dotenv django-allauth django-cors-headers requests djangorestframework
- psycopg2-binary → PostgreSQL ドライバ
-
python-dotenv →
.env
管理 - django-allauth → Okta 認証などで利用
- django-cors-headers → Vue 連携時の CORS 制御
- requests → HTTP クライアントライブラリ。Okta や OAuth 認証などで必須。
- djangorestframework → Django で API を作るためのフレームワーク
3. Django プロジェクト作成
django-admin startproject project .
👉 backend/
に manage.py
と project/
ディレクトリが作成される。
.env
ファイルを作成
4. backend/
の直下に .env
を置く。
# Django 基本設定
DEBUG=True
SECRET_KEY=django-insecure-xxxxxx
ALLOWED_HOSTS=localhost,127.0.0.1
# DB 設定
DB_NAME=projectdb
DB_USER=projectuser
DB_PASSWORD=projectpass
DB_HOST=localhost
DB_PORT=5432
# Okta (OIDC) 設定
OKTA_BASE_URL=https://example.okta.com
OKTA_CLIENT_ID=xxxx
OKTA_CLIENT_SECRET=xxxx
OKTA_REDIRECT_URI=http://localhost:8000/accounts/okta/login/callback/
# メール設定
EMAIL_FROM=system@example.com
EMAIL_HOST=smtp.example.com
EMAIL_PORT=587
EMAIL_USE_TLS=True
EMAIL_HOST_USER=mailer@example.com
EMAIL_HOST_PASSWORD=yourpassword
👉 本番・開発で値を切り替えやすい。
settings.py
の修正
5. 以下を project/settings.py
に追加・修正する。
import os
from pathlib import Path
from dotenv import load_dotenv
BASE_DIR = Path(__file__).resolve().parent.parent
# .env 読み込み
load_dotenv()
SECRET_KEY = os.getenv("SECRET_KEY", "dummy")
DEBUG = os.getenv("DEBUG", "False") == "True"
ALLOWED_HOSTS = os.getenv("ALLOWED_HOSTS", "").split(",")
# DB 設定
DATABASES = {
"default": {
"ENGINE": "django.db.backends.postgresql",
"NAME": os.getenv("DB_NAME"),
"USER": os.getenv("DB_USER"),
"PASSWORD": os.getenv("DB_PASSWORD"),
"HOST": os.getenv("DB_HOST"),
"PORT": os.getenv("DB_PORT"),
}
}
# 認証(Okta 連携)
INSTALLED_APPS = [
...,
"allauth",
"allauth.account",
"allauth.socialaccount",
"allauth.socialaccount.providers.okta",
"corsheaders",
]
MIDDLEWARE = [
"corsheaders.middleware.CorsMiddleware",
...,
# allauth 用
"allauth.account.middleware.AccountMiddleware",
]
AUTHENTICATION_BACKENDS = (
"allauth.account.auth_backends.AuthenticationBackend",
"django.contrib.auth.backends.ModelBackend",
)
SOCIALACCOUNT_PROVIDERS = {
"okta": {
"SCOPE": ["openid", "email", "profile"],
"AUTH_PARAMS": {"response_type": "code"},
"OKTA_BASE_URL": os.getenv("OKTA_BASE_URL"),
"OAUTH_PKCE_ENABLED": True,
"client_id": os.getenv("OKTA_CLIENT_ID"),
"SECRET": os.getenv("OKTA_CLIENT_SECRET"),
"redirect_uri": os.getenv("OKTA_REDIRECT_URI"),
}
}
# CORS / CSRF
CORS_ALLOW_CREDENTIALS = True
CORS_ALLOWED_ORIGINS = [
"http://localhost:5173",
"http://127.0.0.1:5173",
]
CSRF_TRUSTED_ORIGINS = [
"http://localhost:5173",
]
# メール設定
EMAIL_BACKEND = "django.core.mail.backends.smtp.EmailBackend"
DEFAULT_FROM_EMAIL = os.getenv("EMAIL_FROM")
EMAIL_HOST = os.getenv("EMAIL_HOST")
EMAIL_PORT = int(os.getenv("EMAIL_PORT", 587))
EMAIL_USE_TLS = os.getenv("EMAIL_USE_TLS", "True") == "True"
EMAIL_HOST_USER = os.getenv("EMAIL_HOST_USER")
EMAIL_HOST_PASSWORD = os.getenv("EMAIL_HOST_PASSWORD")
# ログ
LOGGING = {
"version": 1,
"disable_existing_loggers": False,
"handlers": {
"file": {
"class": "logging.handlers.RotatingFileHandler",
"filename": BASE_DIR / "logs" / "django.log",
"maxBytes": 10 * 1024 * 1024,
"backupCount": 20,
"formatter": "verbose",
},
},
"loggers": {"django": {"handlers": ["file"], "level": "INFO"}},
"formatters": {
"verbose": {"format": "%(asctime)s [%(levelname)s] %(name)s: %(message)s"}
},
}
# タイムゾーン
TIME_ZONE = "Asia/Tokyo"
USE_I18N = True
USE_TZ = True
# ファイルアップロード制限
FILE_UPLOAD_MAX_MEMORY_SIZE = 30 * 1024 * 1024
DATA_UPLOAD_MAX_MEMORY_SIZE = 30 * 1024 * 1024
.gitignore
に .env
を追加
6. .env
7. ログ出力用フォルダを作成
Django の設定でログを logs/django.log
に出力するようにしたので、
あらかじめフォルダを作成しておく必要がある。
# backend 配下で実行
mkdir logs
👉 backend/logs/
が作成され、その中に django.log
が自動生成されるようになる。
8. 開発サーバー起動確認
python manage.py runserver
-
http://127.0.0.1:8000/
→ Django 初期画面
今回のゴール
-
.env
を導入して実務で必要な設定をまとめた - runserverで開発サーバーが起動できた
次の展開
次は accounts アプリの作成とカスタムユーザモデル として、
ユーザ関連のモデルを作成する。
Discussion