Flask的MVC模式,具體怎麼實現?
08-19
MVC中M代表數據,V代表視圖,C代表控制器
我認為模型最容易理解,因為它是被使用和操縱的數據。模型通常綁定到資料庫表,模型的一個實例代表一個表中的一行數據。請注意,如果您有兩個相關的表格,例如員工和部門,那麼這些表格將由兩個單獨的模型表示,而不是一個。你想保持你的模型儘可能原子。模型的一個不太明顯但仍然有效的用途是用於表示非永久性數據片段。例如,如果您的網站有聯繫表單,那麼在通過電子郵件發送出去之後不需要這些數據,但在此之前必須用模型表示(為了執行驗證等)。模型不僅代表數據,而且代表數據的常見操作,從驗證常式到更改數據(例如,從提交的文本中剝離HTML標籤)。在Web開發中,視圖也很簡單:視圖包含HTML。我使用過的大多數框架(我在Yii,Zend和Ruby on Rails方面擁有最多的經驗)使用一個充當主要布局的頁面。例如,該頁面將開始並完成HTML。其他查看頁面表示界面的各個方面,例如表單,多個記錄的列表或單個記錄的顯示。然後將這些單獨的片段放入主布局文件中以生成完整的輸出。
視圖不僅包含HTML,還包含一些Python(或其他語言)。這樣的代碼應該只執行非常簡單的任務,比如列印一個變數的值。一個常見的初學者的錯誤是將過多的編程(即邏輯)放入Views中。 View中的目標是將數據和演示文稿組合起來以創建界面。觀點不應該「思考」很多。例如,一個View可能會使用一個條件,以便它只列印一個變數,如果它有一個值,或者使用循環列印出數組的每個成員,但View不應該對數據進行嚴格的格式化或修改。假設您有一個頁面,該頁面還顯示登錄用戶在網站上註冊的時間。原始註冊日期將來自資料庫(即成為模型的一部分),並將生成的計算結果顯示在視圖中,但實際計算應發生在模型中,而不是視圖(或控制器)中。
控制器通常充當模型和視圖之間的粘合劑,儘管它並不總是那麼清楚。 (事實上,MVC的區別很容易模糊。)正如我所說的,Controller表示一些操作:模型和視圖完成的事情。模型操作包括從資料庫中檢索單個記錄或檢索所有記錄。查看操作是對用戶事件的響應:提交表單,載入頁面等
推薦閱讀: