10
djangoでのビジネスロジックとデータアクセスの分離
私はDjangoでプロジェクトを書いていて、コードの80%がファイルにあることがわかりましたmodels.py。このコードは混乱を招き、一定の時間が経過すると、実際に何が起こっているのか理解できなくなります。 ここに私を悩ませるものがあります: モデルレベル(データベースからのデータの処理のみを担当するはずでした)もメールを送信したり、APIを他のサービスに提供したりしているのは醜いです。 また、ビジネスロジックをビューに配置することは、制御が難しくなるため、許容できません。たとえば、私のアプリケーションでは、の新しいインスタンスを作成する方法が少なくとも3つありますがUser、技術的には均一に作成する必要があります。 モデルのメソッドとプロパティが非決定的になるとき、および副作用が発生するときはいつでも気が付きません。 これは簡単な例です。最初は、Userモデルは次のようでした。 class User(db.Models): def get_present_name(self): return self.name or 'Anonymous' def activate(self): self.status = 'activated' self.save() 時間の経過とともに、次のようになりました。 class User(db.Models): def get_present_name(self): # property became non-deterministic in terms of database # data is taken from another service by api return remote_api.request_user_name(self.uid) or 'Anonymous' def activate(self): # method …