はじめに
この記事は、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の実装部分を記載します
(次回は未作成です。作成次第リンク張ります)