读狼书,重温flask
最近做個簡單的MIS系統, 趁機讀《flask web 開發實戰 入門、進階與原理解析》 李輝。 由于是flask官方團隊的人寫的。方方面面都很細致。
很多寫法、配置,和之前0.X時代也有了不同。正好整理一下。
打破書里的順序,把自己不熟的地方摘記出來,隨寫隨改。
因為我現在都是前后分離的寫法了,所以涉及template, form的知識點就略過了。
感覺需要注意的點有些瑣碎?;蛘哒f自己之前學的也都是一鱗半爪,結果到處是洞。
所以按自己歸納的topic統一整理一下。
隨著整理,也對框架的輕和重有了新的認識。
后端django和flask作為對比,前端angular和手工寫頁面作為對比。
——怎么說呢,各種瑣碎細致的配置一頓搞下來。記憶學習負載肯定是大的。
1 輕量級的框架,開發起來記憶學習成本并不輕。
輕量級的框架,本身很"微",但是要配置到工作狀態,其實要做大量配置工作。使用過程并不輕。
遠比django這樣的全家桶,開箱即用的框架,要麻煩些。(甚至從項目路徑結構,文件名,blueprint名字,擴展如何引用,都要“學”+“按套路來”),這些都是成本
就好比,高手用輕劍,那是因為他內力高。低手如果要降低對擼代碼的恐懼,培養興趣,無腦出活,其實還是用6管斯特林 似的 全家桶框架更好。
2 輕量級框架付出更多“概念”成本,是為了換來靈活性
為了全方位的可定制。類似《Unix編程藝術》里說的“從頭到腳的靈活性”。——和unix一樣,這對后端,尤其重要。
3 重型框架付出更多的“概念”成本,是為了換來同質性。
用angular這樣的重型框架,也同樣會學習不少概念。這樣的目的是獲得面向對象的好處:“一切XX皆可以按YY來操作”。
恰恰屏蔽掉了“部署平臺”,等等的靈活性,交給框架了。
4 非核心域用重型框架,核心域用輕型框架
到底用什么框架,還是要根據
1工作本身特點
2 自己對自己工種、職業定位
2方面綜合考慮。
從工作本身角度說:
1重型框架是通解;
2輕型框架是特解,有可能得到最優解;
所以:我的選擇是:
非核心工作,用重型框架;
重型框架的好處:擼代碼容易,效率高,便于多人協作,千人一面(濫竽充數)。
重型框架的壞處:會更限制自己的思維到MVC或MVT 或MVXX...,而且有可能模糊業務層 寫成強耦合 系統,參看rails, django, phoenix,你們錯了
但是是不是強耦合 要考發展階段,項目復雜度是慢慢成長起來的。很多小項目,使用重型框架盡快搞出來,并沒有問題。80%并沒有機會真的繼續演化成復雜項目。
當20%的項目真的有機會復雜起來,那時候重構不遲??梢訫 V C 分別用輕量框架定制開發。
這也屬于“不要過早優化”了吧。
比如,我不是前端開發者,也不想往那個方向發展,那么前端寫響應式頁面,就用angular這樣的重型框架。替我包辦了N多細節,前端關心的那些邊角問題不是我關系的核心問題(比如打包尺寸,響應時間之類的)。和我用u3d一樣。
從個人角度說:
非個人興趣方向,非自己的核心域,用重型框架和通解
自己的核心域,要盡量保證靈活性,也要盡量對自己提出高要求,
即使以重型框架入門,也不要滿足,要及時切換到輕量框架,然后不斷演化,不斷折騰。
如果是針對業務建模與切分領域,那么后端web server 用flask是個很好的切入點。
因為py本身就是膠水,其他語言實現的領域模型,都可以在這里粘合中轉,那么flask的靈活性確實就是必要的。
現在僅僅把flask當 rest api 來用。配合nodejs寫gateway,實現領域邏輯的分解。
而前端頁面用angular,能實現相當的controller工作+全部的view工作。還是很好用的。
未分類
flask并不是mvc框架
,沒有內置數據模型。P25
flask的view 相當于Controller function
jinja2的html template 相當于MVC的View
SQLAlchemy 相當于 Model
一、配置與啟動
1用 flask run啟動。 P14
而不是 在 app.py里
if __name__ == '__main__':
app.run()
flask會自動發現app.py和wsgi.py 從中尋找app或者application變量。
使用其他模塊名,則需要設置環境變量,因為我只使用app.py,所以不管其他。
P18
flask run --host=0.0.0.0 --port=8000
也可以寫在環境變量里
FLASK_RUN_HOST
FLASK_RUN_PORT
2 環境變量管理 P16
安裝python-dotenv。然后用.env文件管理環境變量
用.flaskenv管理敏感信息,不提交的git倉庫。所以要把.flaskenv添加到.gitignore里
3 多種環境區分 P18
FLASK_ENV 默認 production 開發是可以設置為development。開啟開發特性
默認是:
$ flask run
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: off
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
改成dev后是:
$ flask run
* Environment: development
* Debug mode: on
* Restarting with stat
* Debugger is active!
* Debugger PIN: 824-830-318
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
這才是原來熟悉的debug模式, 修改代碼會自動reload
二、結構組織,blueprint
三、db以及初始化
總結
以上是生活随笔為你收集整理的读狼书,重温flask的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Ruby实例方法和类方法的简写
- 下一篇: 利用peerjs轻松玩转webrtc