
Flask 框架
Flask 是一個微框架,對外部庫的依賴非常少。它是一個非常輕量級的框架,讓我們可以自由地做任何我們想做的事情。
在本章中,我們將使用 Python 和 Flask 框架構建一個專案。
Flask 啟動和配置
像大多數廣泛使用的 Python 庫一樣,Flask 包可以從 Python 包索引 (PPI) 中安裝。讓我們首先建立一個目錄(在本章中,我們建立了一個名為 flaskProject 的目錄),然後建立一個虛擬環境(並將其命名為 flaskEnv),所有與專案相關的依賴項都將載入到其中(包括 Flask)。您還可以安裝 flask-sqlalchemy,以便您的 Flask 應用程式能夠以簡單的方式與 SQL 資料庫通訊。
安裝 Flask 後,您的 flaskEnv(我們的虛擬環境名稱)將顯示如下內容:

使用 Flask 建立應用程式
透過安裝 Flask,我們可以使用很少的程式碼行建立一個簡單的“Flask 中的 Hello 應用”,如下所示:

在終端中輸入以下內容:
$python flaskapp.py
您將看到以下輸出:
正在運行於 http://127.0.0.1:5000/ 或 localhost:5000

以下是我們在示例程式碼中所做操作的解釋:
首先,我們匯入 Flask 類庫。此類的一個例項是 WSGI 應用程式。
其次,我們建立此類的一個例項。應用程式包或模組名稱是我們的第一個引數。Flask 必須知道在哪裡查詢靜態檔案、模板和其他檔案,這是強制性的。
接下來是 route() 裝飾器,我們使用它來了解哪個 URL 應該觸發我們的方法/函式。
建立 URL 路由
URL 路由使 Web 應用程式中的 URL 易於記憶。我們現在將建立一些 URL 路由:
/hello /members /members/name
我們可以根據上述 URL 編寫以下程式碼並將其儲存為 app.py。
from flask import Flask, render_template app = Flask(__name__) @app.route('/') def index(): return "Index!" @app.route('/Hello') def hello(): return "Hello, World!" @app.route("/members") def members(): return "Members" @app.route("/members/<name>/") def getMember(name): return name if __name__ == '__main__': app.run(debug=True)重新啟動應用程式後,我們使用以下程式碼行在不同的 URL 上獲取不同的輸出:
$ python app.py
正在運行於 https://:5000/
我們將在瀏覽器中獲得以下輸出:

我們可以在瀏覽器中嘗試其他 URL,如下所示:
正在運行於 https://:5000/hello,將給出以下輸出:

正在運行於 https://:5000/members,將給出:

正在運行於 https://:5000/members/TutorialsPoint/,將給出以下輸出:

但是通常我們不希望返回字串(如上所示),我們返回模板。為此,我們希望使用 Flask 中的函式“render_template”,並使用一些輸入返回 render_template。因此,以下函式將完成我們的工作:
from flask import render_template return render_template(‘home.html’)
讓我們建立一個名為 template 的資料夾,並將 home.html 檔案放在其中。
接下來,我們將討論佈局。我們無需為每個模板都使用 html head 標籤和 body 標籤,而是將設計一個佈局來包含 head & body 標籤,幷包裝當前檢視或當前模板。為此,我們必須建立一個單獨的檔案並將其命名為 layout.html。在此檔案中,我們可以放置正常的 head 標籤、body 標籤以及所有其他必需的標籤。
我們可以使用以下程式碼行建立新的 layout.html:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>MyFlaskApp</title> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css"> </head> <body> {% include 'includes/_navbar.html' %} <div class="container"> {% block body %} {% endblock %} </div> <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js"> </script> </body> </html>
在上面的程式碼中,我們給標題設定了 track,MyFlaskAp,在 head 中使用了 css cdn,並在 body 塊中使用了 javascript 以啟用 Bootstrap。
現在,我們必須為每個頁面建立導航欄。為此,我們必須首先建立一個名為 include 的資料夾,然後在其中建立 _navbar.html 檔案。現在,在 _navbar.html 中,我們必須使用 getbootstrap.com 中的標準啟動模板。新建立的 _navbar.html 檔案將如下所示:

並將此 _navbar.html 檔案包含到我們的 layout.html 檔案中。
{% include 'includes/_navbar.html' %}
由於我們有 layout 塊,因此我們可以在 home 檔案(home.html)中擴充套件此塊。
我們的 home.html 檔案可以使用以下程式碼建立:
{% extends 'layout.html' %} {% block body %} <div class="jumbotron text-center"> <h1>Welcome to FlaskApp</h1> <p>This application is built on Flask webframework!</p> </div> {% endblock %}
使用此方法,如果我們嘗試執行 flaskapp.py 檔案,那麼我們可以在瀏覽器中看到以下輸出:

現在我們希望啟用(當前選項卡不起作用)我們的 about 選項卡。為 about 選項卡建立一個路由並建立一個模板檔案 about.html。
appflask.py 中的 about 選項卡路由將如下所示:

about.html 檔案將包含以下內容:

因此,Home 和 About 現在都已處理。對於 Articles,我們可以在根目錄中建立一個新檔案(data.py),在其中放置資料並在我們的網頁中呼叫它。
data.py
def Articles(): articles = [ { 'uid': 1, 'title': 'Article_One', 'body': 'Flask, being a microframework, often requires some repetitive step to get a third party library working. Because very often these steps could be abstracted to support multiple projects the Flask Extension Registry was created.', 'Author': 'Rajesh Joshi', 'Created-on': '07-09-2018' }, { 'uid': 2, 'title': 'Article_Two', 'body': "Flask, being a microframework, often requires some repetitive steps to get a third party library working. Because very often these steps could be abstracted to support multiple projects the Flask Extension Registry was created.", 'Author': 'Rajesh J', 'Created-on': '07-09-2018' }, { 'uid': 3, 'title': 'Article_Three', 'body': 'Flask, being a microframework, often requires some repetitive steps to get a third party library working. Because very often these steps could be abstracted to support multiple projects the Flask Extension Registry was created.', 'Author': 'Joshi Rajesh', 'Created-on': '07-09-2018' } ] return articles
以下是 articles.html 的程式碼,它將為每個 uid 顯示文章標題。
{% extends 'layout.html' %} {% block body %} <h1>Articles</h1> {% for article in articles %} <li class="list-group-item"> <a href="article/{{article.uid}}"> {{article.title}}</a> </li> {% endfor %} {% endblock %}
總而言之,Flask 是最流行的 Python Web 框架之一,因為它輕量級。雖然它是微框架,但它是一個可擴充套件的 Python Web 框架。透過提供所需的功能,Flask 加速了簡單 Web 應用程式的開發。因此,Flask 更適合於較小、不太複雜的應用程式。