Table of contents
Open Table of contents
はじめに
環境構築するたびに、人は強くなる。なんてことはなく、Django のプロジェクト作成時にやっておいた方が良さげなことを整理するために、この記事を作成する。
環境構築
作業環境の情報は以下の通り。
- OS: Windows 10
- Python 3.10.x
- パッケージ管理: Poetry
- Linter:ruff
- 静的解析:pre-commit
ruff についてはバージョンが若い(執筆時点では)ので、プロダクト採用する際には pylama で代用することを検討する必要がある。
パッケージのインストール
パッケージを追加する。
mkdir [プロジェクト名]
cd [プロジェクト名]
poetry init
poetry shell
poetry add django
poetry add django-extensions
poetry add --dev pre-commit
poetry add --dev ruff
poetry add --dev python-dotenv
Django Rest Framework を使用する場合は以下のパッケージも追加する。
poetry add djangorestframework
poetry add django-cors-headers
Django shell は使いづらいので、ipython を設定する。(本番環境で使用するかは要相談。)
poetry add --dev ipython
// 起動確認
python manage.py shell --ipython
静的解析の設定
pre-commit の設定ファイルを作成する。ruff の設定のみ記載するが、残りは好みでカスタマイズする。
./.pre-commit-config.yaml
repos:
- repo: https://github.com/astral-sh/ruff-pre-commit
# Ruff version.
rev: v0.1.4
hooks:
# Run the Ruff linter.
- id: ruff
# Run the Ruff formatter.
- id: ruff-format
exclude: "migrations/"
以下のコマンドを実行し、設定を有効化する。
pre-commit install
プロジェクトとアプリの作成
プロジェクトとアプリを作成するコマンドを実行する。
プロジェクトのルートディレクトリをシンプルにするために、アプリを apps ディレクトリ配下に作成している。
python manage.py startproject [プロジェクト名] .
mkdir apps
python manage.py startapp [アプリ名] apps
本番環境と開発環境で設定ファイル分割
プロジェクト作成直後は、settings.py が作成される。これを以下のように開発用設定ファイルと本番用設定ファイルに分割する。
-
before
- settings.py
-
after
- settings 設定フォルダ
- base.py 共通設定
- dev.py 開発環境用の設定
- prod.py 本番環境用の設定
- settings 設定フォルダ
分割手順
settings.py があるディレクトリに cd を行い、settings ディレクトリを作成する。
mkdir settings
既存 settings.py を base.py へリネームし、作成したフォルダ配下に移動する。
mv settings.py settings/base.py
__init__.py ,dev.py, prod.py を作成する。
cd settings
touch __init__.py
touch dev.py
touch prod.py
__init__.py
try:
from .local import * # noqa: F403
except ImportError:
from .product import * # noqa: F403
dev.py
from .base import * # noqa: F403
prod.py
from .base import * # noqa: F403
Flake コーディング規約違反しているため、回避する手段があれば追記する。
必要に応じて、.gitignore に local.py を追記する。
.gitignore
### Django ###
*.log
*.pot
*.pyc
__pycache__/
local.py
環境変数の読み込み
開発環境用の環境変数を .env で制御する。
.env ファイルを作成し、試しに SECRET_KEY を設定する。
touch .env
.env
SECRET_KEY = fuga
settings.py を以下のように環境変数を読み込む設定を実装する。
DEBUG = os.environ.get("DEBUG", "True") == "True"
if DEBUG:
from dotenv import load_dotenv
load_dotenv()
SECRET_KEY = os.environ.get("SECRET_KEY", "fuga")
仮に DEBUG = False で起動すると、本番環境での動作を確認できる。
まとめ
以上、Django の初期設定でした。プロジェクト開始時にこの記事が役立つことを期待する。