PyCharm 支持的 Web 框架
Python 里有很多開發(fā)框架用來幫助你輕松創(chuàng)建 Web 應(yīng)用, 本節(jié)主要講述 PyCharm 支持哪些測試框架,以及相關(guān)框架基本介紹。
1. Web 框架介紹
Python Web 框架大致分為以下三類:
- Full-Stack Web 框架:功能非常全面,提供全方案Web開發(fā)支持。Django 是典型代表。
- Non Full-Stack Web 框架:框架相對比較靈活,只完成基本的功能,面向需求簡單,項目周期短的項目。Flask 是典型代表。
- Asynchronous 異步框架:速度快,I/O性能高,高并發(fā)。 Tornado 和 Sanic 都屬于這種框架。純接口服務(wù)用的比較多。
PyCharm 專業(yè)版對下面的主流 Python 框架提供以下支持:
由圖所示, PyCharm 對 Django 的支持最為全面, Flask and Pyramid 的支持次之, Django and Flask 是現(xiàn)在流行的Web 框架之一。
2. Django
Django是 Full-Stack Web 框架的代表,功能非常全面和成熟,開發(fā)文檔很完備。它在Python Web開發(fā)框架的占有率應(yīng)該是第一。Django 的宗旨就是盡可能的提供所有功能,讓你用盡可能少的代碼完成業(yè)務(wù)。
Django 遵循了 MVC 開發(fā)模式,并將這個模式命名為 MTV ( MTV 模式是 Python 中獨有的):
- M Model(數(shù)據(jù)模型,用于后端數(shù)據(jù)庫模型定義和處理模塊);
- T Templates(模版,用于前端顯示信息);
- V View(視圖,用于接收客戶端請求、處理Model、渲染返回信息給客戶端等)。
優(yōu)點:
- 各種組件集成高度成熟,配置齊全;
- 用戶模型、權(quán)限認證體系健全;
- ORM數(shù)據(jù)庫管理功能簡單方便;
- 自帶后臺管理功能。
缺點:
配置相對復(fù)雜;
數(shù)據(jù)庫 ORM 組裝出來的 sql 語句性能較差。
Django安裝
- 通過 pip 直接安裝:
pip install Django
- 通過源碼下載并安裝:
git clone https://github.com/django/django.git
Tips: 我們將在下一節(jié)講解如何在 PyCharm 創(chuàng)建基于Django框架的 Web 項目。
3. Flask
3.1 基本介紹
Flask 算是 Non Full-Stack Web 框架代表,是基于 Werkzeug 工具箱編寫的輕量級 Web 開發(fā)框架,它在中國的應(yīng)用其實挺廣的。它主要面向需求簡單,項目周期短的 Web。它的靈活性體現(xiàn)在,它的模塊化設(shè)計可以輕松適合開發(fā)者的需求。Flask 跟 Django 比起來,你可以自己造輪子,也可以是以插件的形式使用第三方庫。
優(yōu)點:
- 項目結(jié)構(gòu)和配置簡單;
- 組件可以自由拆裝;
- 小項目或臨時性項目比較適用。
缺點:
組件高度自定義帶來的就是各種組件之間的兼容性問題嚴重。
Flask 安裝:
pip install flask
3.2 創(chuàng)建 Flask 項目
PyCharm 創(chuàng)建一個應(yīng)用程序并生成特定的目錄結(jié)構(gòu),您可以在 Projec 工具窗口中瀏覽這些結(jié)構(gòu)。除此之外,PyCharm 創(chuàng)建了一個名稱為 app.py Python 腳本。
請注意,應(yīng)用程序使用以下 Flask 特定變量運行:
FLASK_APP=app.py 定義 Flask 應(yīng)用程序的入口點 - Flask 類的目標實例。
FLASK_ENV=development 設(shè)置環(huán)境。
FLASK_DEBUG=0 = 控制內(nèi)置的 Flask 調(diào)試模式。啟用此模式FLASK_DEBUG =1 后,開發(fā)服務(wù)器將在任何代碼更改時自動重新加載,從而實現(xiàn)持續(xù)調(diào)試。有關(guān) Flask 調(diào)試器的信息,請參閱 Flask 調(diào)試模式。
4. Pyramid
4.1 基本介紹
與 Django 一樣都是成熟的 Web 框架, 都是面向大的應(yīng)用,但是在擴展性和靈活性上走了不同的路。Pyramid 關(guān)注靈活性,讓開發(fā)者選擇合適的工具來開發(fā)項目,這與 Flask 是相似的。
優(yōu)點:
- Pyramid 在這三個框架里是最靈活的。它可以用來寫小的應(yīng)用,它也能來支持像 Dropbox 這樣大名鼎鼎的網(wǎng)站;
- 支持更多的模板語言。
缺點:
- 社區(qū)活躍率低,學(xué)習(xí)資料比較少,學(xué)習(xí)曲線比較陡。
Pyramid 安裝:
easy_install pyramid
4.2 創(chuàng)建 Pyramid 項目
打開 New Project 窗口, 選擇創(chuàng)建 Pyramid 項目,選擇解釋器,然后點擊 Create:
PyCharm 創(chuàng)建項目、安裝 Pyramid 及其依賴項并生成特定的目錄結(jié)構(gòu),您可以在Project 工具窗口中瀏覽這些結(jié)構(gòu)。創(chuàng)建項目時,必須運行setup.py以安裝項目進行開發(fā)。PyCharm 可能會通知你這樣做,如下圖所示:
5. Tornado
5.1 基本介紹
Tornado 是一個開源的網(wǎng)絡(luò)服務(wù)器框架,它是基于社交聚合網(wǎng)站 FriendFeed 的實時信息服務(wù)開發(fā)而來的。Tornado 跟其他主流的 Python Web 服務(wù)器框架不同是采用 epoll 非阻塞 IO,響應(yīng)快速,可處理數(shù)千并發(fā)連接,特別適用用于實時的 Web 服務(wù)。
優(yōu)點:
- 完備的 Web 框架;
- 提供了異步 I/O 支持、超時事件處理;
- 提供高效的內(nèi)部 HTTP 服務(wù)器;
- 完備的 WebSocket 支持。
缺點:
- 沒有 ORM ,提供的支持和模板少,缺少后臺支持,對小型項目來說開發(fā)速度沒有 django 快。
安裝:
- 通過 pip 直接安裝:
pip install Tornado
- 通過源碼下載并安裝
$ git clone https://github.com/tornadoweb/tornado
$ cd tornado
$ python setup.py install
5.2 創(chuàng)建 Tornado 服務(wù)
Tornado 主要分成四個部分:
- Web 框架(包括 RequestHandler,用于創(chuàng)建Web程序的基類,以及各種支持類);
- 實現(xiàn) HTTP 的客戶端和服務(wù)器端 (HTTPServer 和 AsyncHTTPClient);
- 一個異步網(wǎng)絡(luò)庫 (IOLoop 和 IOStream);
- 一個協(xié)程庫(tornado.gen) ,使得異步調(diào)用代碼能夠以更直接的方式書寫,取代回調(diào)鏈接。
在 Pycharm 里創(chuàng)建一個Python 項目,然后創(chuàng)建新文件添加下面的代碼,就創(chuàng)建了一個最簡單的服務(wù)。
import tornado.ioloop
import tornado.web
class MainHandler(tornado.web.RequestHandler):
def get(self):
self.write("Hello, world")
application = tornado.web.Application([
(r"/", MainHandler),
])
if __name__ == "__main__":
application.listen(8888)
tornado.ioloop.IOLoop.instance().start()
直接運行上面的代碼, 在瀏覽器輸入 http://localhost:8888 , 就會看到 “Hello, world” 顯示在頁面上。
6. Web2Py 與 Google App Engine
Web2Py 與 Google App Engine 這兩種在Python Web 框架中比較小眾,相關(guān)的學(xué)習(xí)資料也比較少,PyCharm 對其支持也并不完全,所以下面只做簡單介紹。
6.1 Web2Py
web2py 是一個為 Python 語言提供的全功能Web應(yīng)用框架,旨在敏捷快速的開發(fā) Web 應(yīng)用,具有快速、安全以及可移植的數(shù)據(jù)庫驅(qū)動的應(yīng)用,兼容 Google App Engine。
創(chuàng)建 Web2Py 時,會自動下載 Web2Py source folder, 但因為下載時間可能比較長,導(dǎo)致下載失敗,
所以可以事先下載source folder, 然后在創(chuàng)建時指定本地目錄。
點擊 create 后, 項目創(chuàng)建成功后,運行項目:
停待幾秒,在彈出框中輸入密碼,然后點擊 start server, Web2Py 網(wǎng)站搭建完成:
Web2py 最大的吸引力在于其內(nèi)置的開發(fā)環(huán)境。當(dāng)設(shè)置 Web2py 實例時,將獲得一個 Web 界面,實際上是一個在線 Python 應(yīng)用程序編輯器,可以在其中配置應(yīng)用程序的組件。所以你可以通過瀏覽器對你的應(yīng)用程序進行所有的開發(fā)、部署和維護。
6.2 Google App Engine
Google App Engine 提供一整套開發(fā)組件來讓用戶輕松地在本地構(gòu)建和調(diào)試網(wǎng)絡(luò)應(yīng)用,之后能讓用戶在Google強大的基礎(chǔ)設(shè)施上部署和運行網(wǎng)絡(luò)應(yīng)用程序,并自動根據(jù)應(yīng)用所承受的負載來對應(yīng)用進行擴展,并免去用戶對應(yīng)用和服務(wù)器等的維護工作。同時提供大量的免費額度和靈活的資費標準。在開發(fā)語言方面,支持多種語言,包括Java 、Python、 PHP、 Go 與 Node.js等等。
創(chuàng)建 Google App Engine 項目,事先需要下載 App Engine SDK, 在創(chuàng)建項目時需要指定SDK所在路徑。
Google App Engine 在國內(nèi)使用是受限制的,需要用 gmail 帳戶注冊與驗證,所以用的不多,這里不再過多介紹。有興趣的同學(xué)可以參考官網(wǎng)。
7. 小結(jié)
本節(jié)主要介紹了主流的 Web 測試框架,以及 PyCharm 對各個框架的支持情況。當(dāng)下 Django, Flask and Tornado 是應(yīng)用最多的框架。Django 是企業(yè)級框架,著眼于建立完整的大型網(wǎng)站, 功能是最完整的,文檔也是相當(dāng)完備。
Flask 吸收了其他框架的優(yōu)點,把主要領(lǐng)域定義在了微小項目上。同時,它是可擴展的。其社區(qū)活躍度很高,文檔也比較完備,相對 Django 更容易上手。Tornado 是非阻塞式服務(wù)器,速度相當(dāng)快,常被用作大型站點的接口服務(wù)框架。我們可以根據(jù)自己的實際工作需要選擇合適的 Web 框架進行項目開發(fā)。