この記事について
Djangoのベストプラクティスに関して調査して、これは使いたいと感じた事柄を記録として残します。
Django基本構成
『実践的Djangoプロジェクトの設計―開発・運用が楽になる設定ファイルを書こう! アンチパターンとベストプラクティス』
settings.pyを分割
- project/config/settings/以下にdev.py, prod.py, stat.pyのように環境ごとの設定を分けて用意しておく。それぞれは大元となるbase.pyをimportして、必要な箇所のみ上書きして使用する。
- 指定のsettingを使用したい場合は、環境変数DJANGO_SETTINGS_MODULEにファイルを指定する。
秘密鍵等も環境変数から読み込むようにする
- 環境変数からsettingsへ読み込む際はdjango-environというライブラリを使用する。
- 環境変数一覧はpipenvを使用して、
.env
ファイルとして管理する。※ただし、実際の値はgitにあげないように注意する。あくまでテンプレートのみ。実際の値は手入力?
疑似SMTPサーバーに接続する
- localhostにMailHogを立ててテストする。開発環境用。
- テストする時は、python manage.py sendtestmail "message"
- MailTrapというサービスも使えるよ。
メディアのアップロード
- 基本的には開発環境ではS3やCloud Storage等へはアップロードしない。
- する場合はdjango-storagesが使える
ログ
- 最低限ローテションする
- クラウドを利用している場合は、streamhandlerで吐き出して、cloud watch logsやcloud logging等に渡すのもアリ
Djangoのディレクトリテンプレート作成
- cookiecutter-django
データベース設計のTips
-
http://www.code-magagine.com/?p=697
- 論理削除したユーザのログインIDを使えるようにするべきか? もう二度と使えないままでいいのか?
- DBの寿命はアプリより長い! 長生きするDBに必要な設計とリファクタリングを実践から学ぶ
- データベース設計の際に気をつけていること
- https://security.stackexchange.com/questions/187426/how-to-get-better-iam-understanding