Flask 是一個使用 Python 編寫的輕量級 Web 應用框架。它的設計目標是嚴格遵循「小即是美」的哲學,支持擴展,提供了常用的 Web 開發功能,例如路由、請求和響應的處理、模板引擎等。如果你熟悉 Python,並且想要快速構建 Web 應用,Flask 是一個很好的選擇。
一、安裝 Flask
使用 Flask 的第一步是安裝。Flask 可以在 Python 2 和 Python 3 中使用。可以通過 pip 來安裝 Flask,命令如下:
pip install Flask
二、創建 Flask 應用程序
Flask 應用程序是一個包含「視圖函數」的 Python 模塊。視圖函數的作用是處理從客戶端發來的 HTTP 請求,並返回 HTTP 響應。創建 Flask 應用程序的步驟如下:
1. 創建 Python 文件,例如 hello.py;
2. 導入 Flask 模塊;
3. 創建一個 Flask 應用程序實例;
4. 定義一個或多個視圖函數。
代碼如下:
from flask import Flask app = Flask(__name__) @app.route("/") def hello(): return "Hello World!
"
在這個示例中,我們導入了 Flask 模塊,創建了一個 Flask 應用程序實例,然後定義了一個視圖函數 hello()。這個函數使用裝飾器 `@app.route(“/”)` 指定了請求的 URL 是根目錄(/),返回值是一個字元串。
三、運行 Flask 應用程序
創建 Flask 應用程序後,還需要運行它。Flask 應用程序可以在不同的伺服器環境中運行,例如內置伺服器(僅用於開發環境)、Gunicorn、uWSGI、Apache、Nginx 等。在開發環境中可以直接通過 Python 命令運行,命令如下:
export FLASK_APP=hello.py flask run
這個命令會啟動內置伺服器,監聽本地的 5000 埠,可以在瀏覽器中打開 http://localhost:5000 訪問。
四、路由
路由是指應用程序如何響應請求。在 Flask 中,路由是通過裝飾器來實現的,例如 `@app.route(“/”)`。Flask 支持不同的 URL 規則,例如靜態路由、動態路由、重定向等。
靜態路由的格式如下:
@app.route("/about") def about(): return "About Us
"
動態路由的格式如下:
@app.route("/user/") def user(username): return "Hello, %s
" % username
在這個示例中,“ 表示一個變數,可以通過函數參數來獲取。例如訪問 http://localhost:5000/user/john 會返回 `
Hello, john
`。
五、請求和響應
Flask 應用程序可以處理不同類型的 HTTP 請求,例如 GET、POST、PUT、DELETE 等。默認情況下,Flask 應用程序只處理 GET 請求。可以使用 `methods` 屬性來指定允許的請求類型,例如 `methods=[‘GET’, ‘POST’]`。
Flask 應用程序返回的是 HTTP 響應,最常見的是 HTML 頁面。可以使用 Flask 提供的模板引擎來生成 HTML 頁面。例如,下面的代碼使用 Jinja2 模板引擎來生成 HTML 頁面:
from flask import render_template @app.route("/hello") def hello(): return render_template('hello.html', name='John')
在這個示例中,我們導入了 render_template 函數,用於讀取名為 hello.html 的模板文件,替換其中的變數 {{ name }},最終生成 HTML 頁面。
六、表單處理
表單是 Web 應用程序中重要的交互方式之一。Flask 應用程序可以通過 Flask 提供的 request 對象來訪問表單數據。例如,下面的代碼處理了一個登錄表單:
from flask import request @app.route("/login", methods=['GET', 'POST']) def login(): if request.method == 'POST': username = request.form['username'] password = request.form['password'] # do something with username and password return "login successfully" else: return render_template("login.html")
在這個代碼中,我們判斷表單提交的方法是否為 POST,如果是,則從表單中提取 username 和 password。如果不是,就顯示名為 login.html 的表單。
七、Flask 擴展
Flask 通過擴展提供了很多有用的功能。這些擴展可以提供資料庫訪問、表單驗證、身份驗證、郵件發送等功能。其中一些擴展是官方支持的,例如 Flask-SQLAlchemy、Flask-WTF,還有很多由社區提供的擴展。
例如,Flask-SQLAlchemy 是一個 Flask 的擴展,用於訪問資料庫。可以通過 pip 安裝 Flask-SQLAlchemy,並使用它提供的 SQLAlchemy 對象來訪問資料庫,例如:
from flask_sqlalchemy import SQLAlchemy app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///test.db' db = SQLAlchemy(app) class User(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(80), unique=True, nullable=False) email = db.Column(db.String(120), unique=True, nullable=False) def __repr__(self): return '' % self.username
在這個代碼中,我們創建了一個名為 test.db 的 SQLite 資料庫,並定義了一個 User 類,用於映射資料庫表。使用 Flask-SQLAlchemy,我們可以使用常見的 ORM 模式來訪問資料庫,例如查詢、插入、更新、刪除等操作。
八、總結
本文介紹了 Flask 框架的核心功能和使用方法。Flask 是一個非常靈活的框架,可以根據需要自由配置和擴展。如果你需要快速地構建 Web 應用程序,並且熟悉 Python 語言,Flask 是一個很好的選擇。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/255043.html