第一個flask程序
from flask import Flask
Flask函數接收一個參數__name__,它會指向程序所在的包
app = Flask(__name__)
url_map
將裝飾器路由和視圖的對應關系保存起來@app.route('/') def index(): return 'Hello World'
if __name__ == '__main__': app.run()
Flask 程序實例在創建的時候,需要默認傳入當前 Flask 程序所指定的包(模塊),接下來就來詳細查看一下 Flask 應用程序在創建的時候一些需要我們關注的參數:
__name__
就可以/ + static_folder
static
templates
在 Flask 程序運行的時候,可以給 Flask 設置相關配置,比如:配置 Debug 模式,配置數據庫連接地址等等,設置 Flask 配置有以下三種方式:
以下演練以設置應用程序的 DEBUG(調試模式) 為例,設置應用為調式模式這后,可以實現以下功能:
- 程序代碼修改后可以自動重啟服務器
- 在服務器出現相關錯誤的時候可以直接將錯誤信息進行拋出到控制台打印
# 配置對象,里面定義需要給 APP 添加的一系列配置 class Config(object): DEBUG = True # 創建 Flask 類的對象,指向程序所在的包的名稱 app = Flask(__name__) # 從配置對象中加載配置 app.config.from_object(Config)
運行測試,在修改代碼之后直接保存,會自動重啟服務器
config.ini
,在配置文件中添加配置# 創建 Flask 類的對象,指向程序所在的包的名稱 app = Flask(__name__) # 從配置文件中加載配置 app.config.from_pyfile('config.ini')
在Edit Configrations配置相關的參數
# 創建 Flask 類的對象,指向程序所在的包的名稱 app = Flask(__name__) # 加載指定環境變量名稱所對應的相關配置 app.config.from_envvar('FLASKCONFIG')
注:Flask 應用程序將一些常用的配置設置成了應用程序對象的屬性,也可以通過屬性直接設置/獲取某些配置:app.debug = True
app.run(host="0.0.0.0", port=5000, debug = True)
# 指定訪問路徑為 demo1 @app.route('/demo1') def demo1(): return 'demo1'
有時我們需要將同一類 URL 映射到同一個視圖函數處理,比如:使用同一個視圖函數來顯示不同用戶的個人信息。
# 路由傳遞參數 @app.route('/user/<user_id>') def user_info(user_id): return 'hello %s' % user_id
# 路由傳遞參數 @app.route('/user/<int:user_id>') def user_info(user_id): return 'hello %d' % user_id
這里指定int,尖括號中的內容是動態的,在此暫時可以理解為接受 int 類型的值,實際上 int 代表使用 IntegerConverter 去處理 url 傳入的參數
在 Flask 中,定義一個路由,默認的請求方式為:
如果想添加請求方試,那么可以如下指定:
@app.route('/demo2', methods=['GET', 'POST']) def demo2(): # 直接從請求中取到請求方式並返回 return request.method
Postman的使用:略.
在使用 Flask 寫一個接口時候需要給客戶端返回 JSON 數據,在 Flask 中可以直接使用 jsonify 生成一個 JSON 的響應
# 返回JSON @app.route('/demo4') def demo4(): json_dict = { "user_id": 10, "user_name": "laowang" } return jsonify(json_dict)
不推薦使用 json.dumps 轉成 JSON 字符串直接返回,因為返回的數據要符合 HTTP 協議規范,如果是 JSON 需要指定 content-type:application/json
# 重定向 @app.route('/demo5') def demo5(): return redirect('http://www.baidu.com')
@app.route('/demo1') def demo1(): return 'demo1' # 重定向 @app.route('/demo5') def demo5(): return redirect(url_for('demo1'))
# 路由傳遞參數 @app.route('/user/<int:user_id>') def user_info(user_id): return 'hello %d' % user_id # 重定向 @app.route('/demo5') def demo5(): # 使用 url_for 生成指定視圖函數所對應的 url,注意url_for括號內要是字符串. return redirect(url_for('user_info', user_id=100))
@app.route('/demo6') def demo6(): return '狀態碼為 666', 666
本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。