我正在Django中编写一个项目,并且看到80%的代码在file中models.py。这段代码令人困惑,并且在一段时间之后,我不再了解实际发生的事情。这是困扰我的事情:我发现模型级别(应该只负责处理数据库中的数据)在发送电子邮件,使用API到其他服务等方面也很丑陋。另外,我发现在视图中放置业务逻辑也是不可接受的,因为这样很难控制。例如,在我的应用程序中,至少有三种方法来创建的新实例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 now has a side effect (send message to user) self.status = 'activated' self.save() send_mail('Your account is activated!', '…', [self.email])我想要的是在代码中分离实体:数据库级别的数据库实体:什么包含我的应用程序?我的应用程序的实体,业务逻辑级别:什么可以构成我的应用程序?有什么好的实践来实现可以在Django中应用的方法?
添加回答
举报
0/150
提交
取消