この記事のメリット
- ソースコード管理が楽になる
- 多人数のプロジェクトのときにコンフリクトを起こしにくくなる
- 大幅な変更にも対応しやすい
- ファイルが細かく分かれているためloggingで発見しやすい
viewsの構成作る
startappでsampleディレクトリを作ることを仮定する
sample/
├ views.py
├ src/
└ first_func/
└ first_func_get.py
first_func_post.py
views内にある1つの関数に対してMethodで呼び出す関数を変更する。
例えば下のようにgetが飛んできた場合はfirst_func_get()という関数をfirst_func_post.pyから呼び出す。
その他の認証ユーザーのみや共通的なロギングなどもviews内の関数に書くかデコレーターを使うのがおすすめ。
from .src.sample.first_func_get import first_func_get
from .src.sample.first_func_post import first_func_post
def sample(request):
if request.method == "GET":
return first_func_get(request)
elif request.method == "POST":
return first_func_post(request)
通常であればviews.pyに各処理と全く同じように書く。
from django.shortcuts import render
def first_func_get(request):
return render(request,'sample/sample.html')
このようにファイルを関数が毎に細かく書くことでloggingで出力するときに確認が容易になる
共通で使う自作ライブラリ、フレームワークの管理
Djangoをmanage.pyのあるディレクトリから見てPathを指定する。
問えば下のようにlibというディレクトリにありライブラリをimportするときは
from lib.ファイル名 import 呼び出したい関数
のように記述する
ディレクトリ構成を考える
project/
├ lib/
└ samplelib.py
ほぼ全ての関数に使う処理を考える
libディレクトリに入れるライブラリは共通で使うを処理を行うものを入れる
例えば毎回処理に掛かる時間を計測するライブラリやrequestの中身やreturnの中身を毎回編集するような処理。
settingsをカスタマイズする
settings.pyはなるべく最初に細かくカスタマイズすることで開発、運用を効率的に行うことが容易になる。
CICD向けに設定を変える
CICDを効率的にやるためにデプロイ時とローカルで行う処理を環境変数で切り替えられるようにする。
例えばDebug変数やデータベースのパラメーターなどは優先的に環境変数に切り替える。
PYTHONPATHの設定をする
PYTHONPATHを設定することでimport文を短くすることができる
これは好みなので必須ではない
loggingの設定をする
settings.pyにloggingの設定を記述することでログの管理がだいぶ楽にやることができる
logging.basicConfig(
level=logging.DEBUG,
format='[%(levelname)s][LineNo.%(lineno)d][FileName:%(filename)s]: %(message)s',
datefmt='%m/%d/%Y %I:%M:%S %p'
)
出力
[DEBUG][LineNo.43][FileName:views.py]: loggingしたいメッセージ
まとめ
ここに書かれているおすすめの設定は一部だけれどもこれだけでもだいぶソースコードの管理や修正作業、運用保守も楽になってくる。
質問があれば受け付けるのでメッセを飛ばして欲しい。