我正在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
提交
取消