はじめに
この記事は、DjangoでAPIを実装する手順について記載します
My備忘録を兼ねています
目次
- 仮想環境の作成
- Djangoでアプリ作成
- MySQLへの接続切替
- 環境変数を別ファイルで管理
実装手順
1. 仮想環境の作成
ルートディレクトリに仮想環境を作成するため、以下のコマンドを実行
% python3 -m venv venv
作成した仮想環境には以下のコマンドで入ることができます
% source venv/bin/activate
↑ 開発PCがUNIX系の場合
% venv\Scripts\activate
↑ 開発PCがWindowsの場合
仮想環境から出るときは以下のコマンドを実行
(venv) % deactivate
(注意)pip installでパッケージをインストールするときは仮想環境に入って実行しましょう
2. Djangoでアプリ作成
仮想環境に入ります
% source venv/bin/activate
↑ 開発PCがUNIX系の場合
% venv\Scripts\activate
↑ 開発PCがWindowsの場合
仮想環境でdjangoパッケージをインストール
(venv) % pip install django
以下のコマンドを実行して、Djangoプロジェクトを作成します
(venv) % django-admin startproject config .
apiアプリケーションを追加します
(venv) % python manage.py startapp api
ここまで完了したら、正常に作成されたか確認します
以下のコマンドを実行してhttp://127.0.0.1:8000/にアクセス
(venv) % python manage.py runserver
画面が表示されたら、正常にプロジェクトが作成されていることになります
3. MySQLへの接続切替
DjangoはデフォルトでSQLiteに接続されているので、ローカルのMySQLに切り替えます
事前に下記の準備をしてください(詳細については割愛します)
- 接続先のデータベースを作成
- 接続用のユーザを作成
- 作成ユーザの権限設定
MySQLに接続するため、MySQLクライアントパッケージをインストールします
(venv) % pip install mysqlclient
データベースへの接続情報は/config/settings.pyに記載されています
この設定ファイルを修正します
DATABASES = {
    'default': {
        # 'ENGINE': 'django.db.backends.sqlite3',
        # 'NAME': BASE_DIR / 'db.sqlite3',
        'ENGINE': 'django.db.backends.mysql', # MySQLに接続
        'NAME': 'db',                         # 作成したデータベース名
        'USER': 'user',                       # 作成した接続用のユーザ名
        'PASSWORD': 'password',               # ユーザのパスワード
    }
}
接続先をMySQLに変更したら、Djangoの機能でデータベースを構築します
(venv) % python manage.py makemigrations
(venv) % python manage.py migrate
SQLiteは使用しないので、デフォルトで作成されているルートディレクトリのdb.sqlite3は削除してください
最後に正常に起動するか確認します
(venv) % python manage.py runserver
4. 環境変数を別ファイルで管理
データベースへの接続情報など公開したくない情報があると思います
このような情報は別ファイル(以後、環境ファイル)で管理して公開しないようにします
まずは必要なパッケージをインストールします
(venv) % pip install django-environ
ルートディレクトリに.env(環境ファイル)を作成します
作成したら以下のように記載してください(値は必要に応じて変更してください)
SECRET_KEY='xxxx'
DEBUG=TRUE
DB_ENGINE='django.db.backends.mysql'
DB_NAME='db'
DB_USER='user'
DB_PASSWORD='password'
SECRET_KEYのxxxxには、/config/settings.pyのSECRET_KEYの値を入力します
このSECRET_KEYも公開してはいけない情報なので、環境ファイルで管理します
DEBUGは開発・本番環境で切り替えることが多いです
ですので、DEBUGのオンオフも環境ファイルで管理します
また、データベースの接続情報も環境ファイルで管理します
(注意)環境ファイルにスペースが入るとエラーの元になるので、スペースは入れないようにしてください
次に/config/settings.pyを編集します
import environ # 追加
import os      # 追加
~(省略)~
# 環境ファイルの読み込み
env = environ.Env()                           # 追加
env.read_env(os.path.join(BASE_DIR, '.env'))  # 追加
# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/5.0/howto/deployment/checklist/
# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = env('SECRET_KEY') # 変更
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = env.bool('DEBUG')      # 変更
~(省略)~
# Database
# https://docs.djangoproject.com/en/5.0/ref/settings/#databases
DATABASES = {
    'default': {
        # 'ENGINE': 'django.db.backends.sqlite3',
        # 'NAME': BASE_DIR / 'db.sqlite3',
        'ENGINE': env('DB_ENGINE'),     # 変更
        'NAME': env('DB_NAME'),         # 変更
        'USER': env('DB_USER'),         # 変更
        'PASSWORD': env('DB_PASSWORD'), # 変更
    }
}
作成した環境ファイルと読み込んで、env('環境変数')で読み出すことができます
ここまで完了したら正常に起動するか確認します
(venv) % python manage.py runserver
最後に.gitignoreでプッシュ対象外を記載して完了です
.env
venv
これで環境ファイルがGitHubにプッシュされることはなくなりました
また、venvもプッシュする必要がないので対象外にします
最後に
ここまででDjangoでAPIを実装する準備は整いました
次回から本格的にAPIの実装部分を記載します
(次回は未作成です。作成次第リンク張ります)
