第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

django中業(yè)務(wù)邏輯和數(shù)據(jù)訪問(wèn)的分離

django中業(yè)務(wù)邏輯和數(shù)據(jù)訪問(wèn)的分離

呼啦一陣風(fēng) 2019-11-04 14:18:50
我正在Django中編寫(xiě)一個(gè)項(xiàng)目,并且看到80%的代碼在file中models.py。這段代碼令人困惑,并且在一段時(shí)間之后,我不再了解實(shí)際發(fā)生的事情。這是困擾我的事情:我發(fā)現(xiàn)模型級(jí)別(應(yīng)該只負(fù)責(zé)處理數(shù)據(jù)庫(kù)中的數(shù)據(jù))在發(fā)送電子郵件,使用API到其他服務(wù)等方面也很丑陋。另外,我發(fā)現(xiàn)在視圖中放置業(yè)務(wù)邏輯也是不可接受的,因?yàn)檫@樣很難控制。例如,在我的應(yīng)用程序中,至少有三種方法來(lái)創(chuàng)建的新實(shí)例User,但從技術(shù)上講,它應(yīng)統(tǒng)一創(chuàng)建它們。我并不總是注意到模型的方法和屬性何時(shí)變得不確定,以及何時(shí)出現(xiàn)副作用。這是一個(gè)簡(jiǎn)單的例子。首先,User模型是這樣的:class User(db.Models):    def get_present_name(self):        return self.name or 'Anonymous'    def activate(self):        self.status = 'activated'        self.save()隨著時(shí)間的流逝,它變成了: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])我想要的是在代碼中分離實(shí)體:數(shù)據(jù)庫(kù)級(jí)別的數(shù)據(jù)庫(kù)實(shí)體:什么包含我的應(yīng)用程序?我的應(yīng)用程序的實(shí)體,業(yè)務(wù)邏輯級(jí)別:什么可以構(gòu)成我的應(yīng)用程序?有什么好的實(shí)踐來(lái)實(shí)現(xiàn)可以在Django中應(yīng)用的方法?
查看完整描述

3 回答

  • 3 回答
  • 0 關(guān)注
  • 1340 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)