概要:Flask是一個web微框架。“微”也不代表 Flask 功能不強。 微框架中的“微”字表示 Flask 的目標是保持核心簡單而又可擴展。
一、Flask安裝
pip install flask
二、創建Flask工程
- 首先我們導入了 Flask 類。
- 創建該類的實例 app,第一個參數是應用模塊或者包的名稱。如果你使用 一個單一模塊,那麼應當使用 _name_ 。
- 使用 route() 裝飾器來綁定函數的 URL 。
示例:
from flask import Flask
from flask import request
app = Flask(__name__)
@app.route('/study', methods=['GET'])
def hello_world():
return 'Hello World!'
@app.route('/study/<username>', methods=['GET'])
def studyvariable(username):
print(request.method)
print(request.url)
return 'Hello, {}'.format(username)
@app.route('/study/studypost', methods=['POST'])
def study_post():
data = request.form
print(type(data))
print(data)
print(data['username'])
return 'ok'
if __name__ == '__main__':
app.run()
三、相關方法,對象
(1)app.route(rule, options)
- rule 參數表示與該函數的URL綁定。
- options 是要轉發給基礎Rule對象的參數列表。
- methods 接收的是一個列表:GET、POST etc.
(2)app.run(host, port, debug, options) (所有參數都是可選的)
- host :要監聽的主機名, 默認爲127.0.0.1
- port :設置端口號, 默認值爲5000
- debug :是否開啓調試,默認爲false。 如果設置爲true,則提供調試信息
- options :要轉發到底層的Werkzeug服務器。
(3)request
- 在 Flask 中由全局 對象 request 來提供請求信息,操作請求數據
(4)變量規則
通過把 URL 的一部分標記爲 <variable_name> 就可以在 URL 中添加變量。標記的 部分會作爲關鍵字參數傳遞給函數。通過使用<converter:variable_name> ,可以 選擇性的加上一個轉換器,爲變量指定規則。例如示例中的變量 "<username>"
- 轉換器類型:
類型 | 描述 |
---|---|
string | (缺省值) 接受任何不包含斜槓的文本 |
int | 接受正整數 |
float | 接受正浮點數 |
path | 類似 string ,但可以包含斜槓 |
uuid | 接受 UUID 字符串 |
四、調試項目
- 啓動項目後控制檯輸出:
FLASK_APP = app.py
FLASK_ENV = development
FLASK_DEBUG = 0
In folder F:/Python項目/untitled
F:\Python項目\untitled\venv\Scripts\python.exe -m flask run
* Serving Flask app "app.py"
* Environment: development
* Debug mode: off
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
- 通過Postman調試
發送Get請求:http://127.0.0.1:5000/study/wangwu
響應:Hello, wangwu
控制檯輸出:
127.0.0.1 - - [25/Feb/2020 14:13:15] "GET /study/wangwu HTTP/1.1" 200 -
GET
http://127.0.0.1:5000/study/wangwu
發送Post請求:http://127.0.0.1:5000/study/studypost
表單數據:{‘username’:‘lisi’, ‘password’:‘123456’}
響應:ok
控制檯輸出:
<class 'werkzeug.datastructures.ImmutableMultiDict'>
ImmutableMultiDict([('username', 'lisi'), ('password', '123456')])
lisi
127.0.0.1 - - [25/Feb/2020 14:26:42] "POST /study/studypost HTTP/1.1" 200 -