Hello World
Flask 是輕量級web框架,僅保留了核心功能:
- 請求響應處理
- 模板渲染
- URL路由
文章目錄
- Hello World
- flask命令模式
- python命令模式
- 兩種模式對比
- 修改入口文件配置
- flask命令修改
- python命令修改
- 修改端口和地址
- flask命令修改
- python命令修改
- 修改 URL 路由
- 路由的基本組成:
- 路由的工作流程:
- 路由的優點:
- Flask動態路由
- Flask多URL綁定
- 修改視圖函數
- `url_for` 函數
- 作用
- 應用
flask命令模式
- 命令行運行
flask run
# ./app.py
from flask import Flaskapp = Flask(__name__)@app.route("/")
def helloWorld():return '<h1>Hello wusp!</h1><img src="http://helloflask.com/totoro.gif">'
注意點:
- 默認端口 5000
- 默認入口文件名稱 app.py
python命令模式
-
ctrl+F10
pyharm 運行 。 -
或者命令行
python app2.py
需要在代碼里面增加
app.run()
# ./app.py
from flask import Flaskapp = Flask(__name__)@app.route("/")
def helloWorld():return '<h1>Hello wusp!</h1><img src="https://img.suzone.net/biaoqing/201808/3924b2dfb6bcf13730ba75919f2f005f.gif">'app.run()
兩種模式對比
- flask命令模式 運行和配置是調用
flask
命令,是 命令 + 代碼的方式結合。- python命令模式,是純代碼,
flask
相關的配置均使用代碼,推薦。
修改入口文件配置
flask命令修改
在 Windows CMD 中使用 set 命令:
set FLASK_APP=hello.py
在 Windows PowerShell 中則使用下面的命令:
$env:FLASK_APP = "hello.py"
python命令修改
直接運行 python xxx.py
就行了,但是需要增加代碼 app.run()
修改端口和地址
flask命令修改
flask run --host=0.0.0.0 --port=8080
python命令修改
直接在代碼里面修改配置就行了
if __name__ == "__main__":app.run(host="0.0.0.0",port=5600,debug=True)
# ./app.py
from flask import Flaskapp = Flask(__name__)@app.route("/")
def helloWorld():return '<h1>Hello wusp!</h1><img src="https://img.suzone.net/biaoqing/201808/3924b2dfb6bcf13730ba75919f2f005f.gif">'if __name__ == "__main__":app.run(host="0.0.0.0",port=5600,debug=True)
修改 URL 路由
URL路由(也稱為“網址路由”或“Web路由”)是一種將Web請求(即用戶在瀏覽器地址欄輸入的URL)映射到代碼中相應的處理函數或資源的技術。在Web開發中,路由是Web服務器或Web框架的一個核心功能,它允許開發者定義一組規則,這些規則確定不同的URL請求應該由哪個部分的代碼來處理。
路由的基本組成:
- 請求方法:指定了請求的類型,最常見的是GET(讀取數據)和POST(提交數據),但還有PUT、DELETE等其他類型。
- 路由路徑:URL中的一部分,用于匹配請求的URL。它可以包含動態部分,這些部分用變量表示,通常以尖括號
<variable_name>
或冒號:variable_name
來定義。 - 處理器函數:當路由匹配成功時,將調用的函數或方法。這個函數負責生成請求的響應。
路由的工作流程:
- 用戶輸入URL:用戶在瀏覽器地址欄輸入一個URL或點擊一個鏈接。
- 服務器接收請求:Web服務器接收到請求后,會檢查請求的URL和方法。
- 路由匹配:服務器根據預定義的路由規則查找匹配項。
- 執行處理器:一旦找到匹配的路由,服務器將調用相應的處理器函數。
- 生成響應:處理器函數生成響應(通常是HTML頁面、JSON數據等),并將其發送回用戶。
路由的優點:
- 組織代碼:通過將URL映射到特定的處理函數,可以使Web應用的代碼結構更加清晰和模塊化。
- URL設計自由:開發者可以自由設計URL結構,使其既符合用戶習慣也易于搜索引擎優化(SEO)。
- 動態內容生成:可以定義動態路由,根據請求中的參數動態生成內容。
- RESTful API支持:現代Web框架的路由系統支持RESTful API設計,便于構建和維護。
Flask動態路由
from flask import Flaskapp = Flask(__name__)@app.route('/home', methods=['GET'])
def home():return 'Welcome to the Home Page'@app.route('/users/<username>', methods=['GET'])
def show_user_profile(username):return f'User {username}'if __name__ == "__main__":app.run()
在這個示例中,Flask應用定義了兩個路由:
/home
路由響應GET請求,由home
函數處理。/users/<username>
路由是一個動態路由,<username>
是一個變量,可以匹配任何用戶名稱,由show_user_profile
函數處理。
當用戶訪問這些URL時,Flask會根據定義的路由規則將請求映射到相應的處理函數。
Flask多URL綁定
@app.route("/")
@app.route("/index")
@app.route("/home")
def helloWorld():return '<h1>Hello world!</h1>'
修改視圖函數
視圖函數的名稱與URL路由規則無關
url_for
函數
作用
- 以視圖函數名作為參數,返回對應的url
url_for('視圖函數名')
- 支持動態路由傳參
- 支持查詢字符串傳參
- 靜態文件URL
url_for('static', filename='style.css')
應用
以下代碼實現了:通過視圖函數名稱,拼接 a 鏈接 ,便捷的拿到視圖的跳轉地址。
@app.route("/url_for_test")
def url_for_test():helloWorld = url_for('helloWorld')#動態路由的形式,支持傳參print(url_for('user_page', name='greyli')) # 輸出:/user/greyli# 非動態路由多出來的關鍵字,它們會被作為查詢字符串附加到 URL 后面。print(url_for('test_url_for', num=2)) # 輸出:/test?num=2print(helloWorld)#輸出靜態文件路徑style = url_for('static', filename='style.css')return f'<a href="{helloWorld}">helloWorld<a/>'