非エンジニアのスタートアップ 0 年生 ( 5. Django で開発 - その 2 )
こんにちは、株式会社ピケでサーバサイドエンジニアをしている古内です。
こちらの記事は【 5. Django で開発 - その 2 】になります。
1. サービス開発に必要なこと
2. HTML、CSS、JavaScript の基本
3. Python の基本
4. Docker の基本
5. Django で開発 ( 本記事 )
6. GCP にデプロイ
目次
1. この記事について
2. Django の設定
3. 管理画面の準備
4. まとめ
1. この記事について
今回の記事では Django にデータベースを接続したり、データベースを管理する画面を準備します。
この作業は簡易版 Facebook を作ることに限らず、他のものを作るときにも行う作業です。
2. Django の設定
まずは、Django の設定です。
Django の設定には様々なものがあり、今回はデータベースの接続とドメインの設定を行います。
ドメインとは https://note.mu/furuchin という URL があったときに note.mu の部分を指します。
web/myfacebook/myfacebook/settings.py ファイルを開きます。
この設定ファイルを開いて以下の部分を変更します。
ALLOWED_HOSTS = []
このコードを以下に変更します。
ALLOWED_HOSTS = ['*']
この設定はすべてのドメインを許可するという意味になります。
とりあえずはこの設定で大丈夫です。
続いて以下の部分を変更します。
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
このコードを以下に変更します。
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'USER': 'root',
'PORT': '3306',
'OPTIONS': {'charset': 'utf8mb4'},
'CONN_MAX_AGE': 300
}
}
# 本番環境設定
if DEBUG is False:
DATABASES['default']['HOST'] = ''
DATABASES['default']['NAME'] = ''
DATABASES['default']['PASSWORD'] = ''
# 開発環境設定
else:
DATABASES['default']['HOST'] = 'db'
DATABASES['default']['NAME'] = 'dev_myfacebook_db'
DATABASES['default']['PASSWORD'] = 'dev_myfacebook_pw'
このコードはデータベースの設定をしています。
一つ一つ上から解説します。
'ENGINE': 'django.db.backends.mysql' はデータベースの種類の設定です。
'USER': 'root' はデータベースに接続するためのユーザーの設定です。
'PORT': '3306' は接続するポートの設定です。
'OPTIONS': {'charset': 'utf8mb4'} はデータベースで行っている設定です。
'CONN_MAX_AGE': 300 はデータベースに何秒間データベースの接続を維持するかの設定です。
続いて本番環境部分を飛ばして開発環境設定の設定の解説です。
DATABASES['default']['HOST'] = 'db' はデータベースのホスト名の設定です。
DATABASES['default']['NAME'] = 'dev_myfacebook_db' はデータベース名の設定です。
DATABASES['default']['PASSWORD'] = 'dev_myfacebook_pw' はデータベースのパスワードの設定です。
本番環境はまだ用意していないので後で大丈夫です。
DATABASES = { ... } の部分は簡易版 Facebook 以外でもこの様な内容の設定になります。
「# 開発環境」のコメント部分の設定はプロジェクトごとに変わります。
また、PORT、HOST、NAME、PASSWORD、は docker-compose.yml に書いてある項目と同じ内容です。
docker-compose.yml の中に同じ文字列の設定があることを確認してみてください。
続いて以下の部分を変更します。
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'UTC'
このコードを以下に変更します。
LANGUAGE_CODE = 'ja-jp'
TIME_ZONE = 'Asia/Tokyo'
この設定は言語や時間を日本に設定しています。
3. 管理画面の準備
まずは以下のコマンドを実行してください。
docker-compose exec web bash
このコマンドは Django が動いている Docker を操作をするためのコマンドです。
続いて以下のコマンドでディレクトリを移動します。
cd myfacebook/
ディレクトリを移動したら以下のコマンドを実行してください。
python manage.py migrate
このコマンドは Django が最初から備えているユーザー機能をMySQL に反映しています。
実行すると以下の様な文字が表示されます。
Operationstoperform:
Applyallmigrations:admin,auth,contenttypes,sessions
Runningmigrations:
Applyingcontenttypes.0001_initial...OK
Applyingauth.0001_initial...OK
Applyingadmin.0001_initial...OK
Applyingadmin.0002_logentry_remove_auto_add...OK
Applyingcontenttypes.0002_remove_content_type_name...OK
Applyingauth.0002_alter_permission_name_max_length...OK
Applyingauth.0003_alter_user_email_max_length...OK
Applyingauth.0004_alter_user_username_opts...OK
Applyingauth.0005_alter_user_last_login_null...OK
Applyingauth.0006_require_contenttypes_0002...OK
Applyingauth.0007_alter_validators_add_error_messages...OK
Applyingauth.0008_alter_user_username_max_length...OK
Applyingauth.0009_alter_user_last_name_max_length...OK
Applyingsessions.0001_initial...OK
この作業のことをマイグレーションと呼びます。
マイグレーションとはデータベース構造を変更する作業のことです。
今後の記事でも何回か行われます。
反映が完了したら管理画面用ユーザーを作ります。
作り方は以下のコマンドです。
python manage.py createsuperuser
このコマンドを実行すると最初に
Username (leave blank to use 'root'):
と表示され、ユーザー名の入力を求められます。
今回は admin というユーザー名で設定します。
続いて
Email address:
と表示され、メールアドレスの入力を求められます。
今回は特に入力せず Enter キーを押してしまって大丈夫です。( 未設定 )
続いて
Password:
と表示され、パスワードの入力を求められます。
今回は myfacebook というパスワードで設定します。
( 文字を打ってもセキュリティのために文字は画面に移りません )
続いて
Password (again):
と表示され、もう一度同じパスワードの入力を求められます。
最後に
Superuser created successfully.
が表示されたら管理画面用ユーザーの作成完了です。
ブラウザで http://localhost:8000/admin にアクセスしてみてください。
以下の画像のような画面が表示されます。
ユーザー名 admin
パスワード myfacebook
でログインできます。
( これらは先程の管理画面用ユーザー作成時に設定したものです )
ログインすると以下の様な画像の画面が表示されます。
4. まとめ
今回の記事は基本的な Django アプリケーションの準備でした。
この内容は簡易版 Facebook を作るとき以外もやることです。
次回から本格的に簡易版 Facebook のコードを書いていきます。
=======================================
PR
古内開発教室始めてみました!
この記事読んだけどもうちょっと知りたい!
自分ひとりだと心細い!
そういった方がいましたらぜひこちらを見てください!
古内開発教室
=======================================
次の記事 5. Django で開発 - その 3 ←開発中
前の記事 5. Django で開発 - その 1
この記事が気に入ったらサポートをしてみませんか?