Skip to content

2024年使えるDjangoの環境構築および初期設定

Published:

Table of contents

Open Table of contents

はじめに

環境構築するたびに、人は強くなる。なんてことはなく、Django のプロジェクト作成時にやっておいた方が良さげなことを整理するために、この記事を作成する。

環境構築

作業環境の情報は以下の通り。

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 が作成される。これを以下のように開発用設定ファイルと本番用設定ファイルに分割する。

分割手順

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 の初期設定でした。プロジェクト開始時にこの記事が役立つことを期待する。

宣伝

現場で使える Django の教科書