Flask 的原理與介紹

Flask 是一個 Python 的 Web 應用框架,其原理基於 WSGI(Web Server Gateway Interface)規範。

WSGI 規範定義了 Web 應用程式和 Web 賜福器之間的標準介面,Flask 在此基礎上實現了一套 Web 應用框架。Flask 應用程式的核心是一個 WSGI 應用程式,也就是一個 Python callable(可呼叫對象),它能夠接收 HTTP 請求並回傳 HTTP 回應。

在 Flask 中,一個應用程式通常由一個或多個 Python 模組構成,每個模組都定義了一組 URL 路由規則,用戶存取這些 URL 時,Flask 會根據這些規則比對對應的 Python 函式,並將 HTTP 請求轉發給這些函式進行處理,最終回傳 HTTP 回應給客戶端。

Flask 提供了一個輕量級的應用框架,支援諸如路由、模板渲染、Session 管理、表單處理等功能。開發人員可以根據自己的需求,選擇使用 Flask 提供的功能,或者根據自己的需要擴充 Flask 應用程式。

在運行 Flask 應用程式時,需要通過一個 Web 伺服器(例如 Gunicorn、uWSGI、Apache、Nginx 等)來提供 HTTP 服務。Web 服務器接收客戶端的 HTTP 請求,然後將其轉發給 Flask 應用程式,Flask 應用程式處理完請求後回傳 HTTP 回應,Web 伺服器再將其回傳給客戶端。

Flask 的核心是 WSGI 應用程式,這是一個 Python 函式,接收兩個參數,一個是環境變數字典(environ),描述了 HTTP 請求的細節訊息,例如 HTTP 方法、URL、回應標頭等等;另一個是一個可呼叫對象,它是 WSGI 應用程式的一部分,用於處理 HTTP 請求,並回傳 HTTP 回應。這個可呼叫對象通常是 Flask 應用程式的實例。

當 Web 伺服器收到一個 HTTP 請求時,會將該請求轉發給 Flask 的 WSGI 應用程式,WSGI 應用程式,會根據環境變數中的訊息,選擇對應的規則(URL),並呼叫相應的 Python 函式進行處理。Python 函式可以進行一些業務邏輯的處理,如從資料庫中獲取內容,然後使用 Flask 提供的模板引擎將數據渲染到 HTML 模板中,最終回傳 HTTP 回應。Flask 會將 HTTP 回應轉換成符合 WSGI 規範的形式,並回傳給 Web 伺服器,Web 伺服器再將其回傳給客戶端。

Flask 提供了一個輕量級、靈活的 Web 應用框架,讓開發人員可以快速開發 Web 應用程式。Flask 的設計理念是“micro”,即最小化框架的核心代碼,並讓開發人員根據自己的需要選擇使用擴充模組來實現更多功能。Flask 擁有豐富的擴充模組庫,例如 Flask-WTF、Flask-SQLAlchemy、Flask-Login、Flask-Mail 等等,這些擴充模組可以快速實現常用的功能,從而使開發人員可以更專注於業務邏輯的開發。

Flask 還支援藍圖(Blueprint),它是一種將應用程式分解為更小、更易於管理的部分的方式。藍圖可以將路由、視圖函數、靜態文件等打包到一個單獨的模組中,使得多個應用程序可以共用同一個藍圖,從而實現代碼重用。

Flask 應用程序還支持 Middleware,Middleware 是處理 HTTP 請求和回應的一種機制。中間件可以在 HTTP 請求被處理之前、之後或過程中對其進行修改或增強。Flask 支援使用 WSGI Middleware 和 Flask Middleware,這使得開發人員可以在應用程式級別上控制 Middleware 的使用,從而提高應用程式的可重用性和可維護性。

總之,Flask 是一個輕量級、靈活的 Web 應用框架,它將 Python 函式作為視圖函式,通過 WSGI 標準將 HTTP 請求轉換為 Python 函式呼叫,再將 Python 函式回傳的回應轉換為 HTTP 回應。Flask 提供了豐富的擴充模組庫,支持藍圖和 Middleware 等功能,使得開發人員可以更快速、更靈活地開發 Web 應用程式。

課程推薦

AI工作術全面學習實戰營:6 堂精選課程,學會最好用 AI 工具,翻轉你的人生

AI工作術全面學習實戰營:6 堂精選課程,學會最好用 AI 工具,翻轉你的人生

《PChome雜誌》攜手 5 位在 AI 領域的專業講師,打造上述 6 堂實用課程,教你學會時下最好用的 AI 工具,導入生成式 AI 來產製工作內容,改造並升級你的工作流程。

輸入折扣碼 ZERO2024 還可以額外獲得 NT$400 優惠喔。

HTML與SEO實戰應用—並以ChatGPT助力提升網站品質與流量

HTML與SEO實戰應用—並以ChatGPT助力提升網站品質與流量

本課程專為希望深入了解 HTML 並有效結合 SEO 策略的學員設計。我們將重點放在 HTML 的深度學習與應用上,同時穿插介紹如何透過搜索引擎優化提升網站能見度。透過即時互動式的直播教學,加上 ChatGPT 的輔助,您將學習到如何建立一個結構優良、美觀且符合 SEO 標準的網站。這不僅會提升網站的用戶體驗,還會大幅提高網站的搜索引擎排名,進而增加訪客流量和潛在客戶。
用AI強化職場競爭力 ChatGPT、Midjourney從入門到精通

用AI強化職場競爭力 ChatGPT、Midjourney從入門到精通

在快速變遷的職場中,提升競爭力成為關鍵。透過引領潮流的AI技術,ChatGPT和Midjourney將助您勇攀高峰。無論您是AI新手還是專家,這個課程將引導您從入門到精通,解密AI的奧秘,並學習如何運用於職場。
GitHub Copilot AI 程式碼編輯工具應用實務班

GitHub Copilot AI 程式碼編輯工具應用實務班

讓學員瞭解有效地使用該工具來加速開發流程、提高程式碼品質和生產力。課程重點放在以 JavaScript 程式語言為例,介紹 Copilot 的基本原理、使用方法和最佳實踐。

輸入折扣碼 TC1456JA 還可以額外獲得 NT$500 優惠喔。

ChatGPT X Clipchamp AI 生成影片、配音與字幕應用實戰班

ChatGPT X Clipchamp AI 生成影片、配音與字幕應用實戰班

掌握Clipchamp AI的操作技巧,靈活運用Clipchamp AI進行影片編輯和創作,實現創意表達和傳播目的。

輸入折扣碼 TC1451JAN 還可以額外獲得 NT$500 優惠喔。

如何串接多種數位工具資訊?Looker Studio 資料視覺化實戰班|GoogleAds x FB廣告 x GA流量數據

如何串接多種數位工具資訊?Looker Studio 資料視覺化實戰班|GoogleAds x FB廣告 x GA流量數據

Looker Studio除了可協助使用者監控網站流量、廣告成效、選擇匯入資源的管道之外,還可以將數據資料多平台整合、數據報表即時更新、數據範本可重複套用的效益,透過自動化系統,將數據全部匯入同一個報表平台,是企業不可或缺的重要工具。

輸入折扣碼 TC1270JIA 還可以額外獲得 NT$500 優惠喔。

和我們交流

加入我們的社群,裡面會有一些技術的內容、有趣的技術梗,以及職缺的分享,歡迎和我們一起討論。