Falsk入門及基本操作
阿新 • • 發佈:2018-11-24
flask入門
封裝:tcp、ip http,socket,web開發框架
安裝
pip install flask
(瞭解) flask 框架組成
在安裝flask包時,flask依賴的相關包也會安裝。
- flask 核心程式碼、方法封裝
- jinja2 前段渲染值得語法
- MarkupSafe 前端特殊字元轉義,防止後端渲染時出現問題。
- itsdangerous 加密和安全工具
- Werkzeug 德語。http協議封裝。
flask約定俗成架構
├─ model.py 類、資料庫表結構 模型層
├── app.py
├── static .css .js .jpg 靜態資原始檔
└── templates .html 網頁靜態檔案 控制層
基本框架
from flask import Flask, render_template app = Flask(__name__) # 生成應用例項 # 路由route @app.route('/') # 匹配請求地址 def index(): name = '小黑' age = 10 return render_template('index.html', name = name, age=age) if __name__ == '__main__': app.run(host='0.0.0.0', port=8888) """ # render_template() 先獲取HTML模板資訊,插入後端變數,最終才返回給瀏覽器。 本質: # return """ # <html> # <body> # <h1> hello {} # </body> # </html> # """.format(name) """
完成上面的步驟一個簡單的路由就建立完成了,輸入點選執行欄中的網址就能直接訪問了。
注意&小知識點
路由:
- 匹配固定的地址。
‘/’ → ‘//127.0.0.1:5000’ //127.0.0.1:5000 匹配根目錄
flask命令列工具:
flask run --port=5001 --host=‘0.0.0.0’
app.run方法
app.run()方法:有幾個引數
- hots 並不是伺服器的執行地址,伺服器執行在本地,而是控制允許訪問的客戶端的地址段。預設是127.0。0.1只執行自己瀏覽器訪問,不允許區域網其他人訪問, 如果配置成’0.0.0.0’,表示接受任何ip地址的客戶端,包括區域網其他人訪問。
其他人有的可以訪問,包括區域網其他人訪問,原因是我們現在執行的flask服務 - port 埠,整數
- (瞭解)threaded=True 開啟多執行緒,區域網內接受多使用者訪問,實測也不夠穩定。
- debug=True, 開啟debug模式,修改程式碼伺服器自動重啟。也可以app.config[‘DEBUG’] = True。看到日誌Debug mode:on 目前是1.0.2版本。
之前有一個版本剛才的設定並不會生效,原因是flask app執行時讀取環境變數裡的配置值,解決 set_FLASK_DEBUG=True。
flask1.0.2版本,開啟debug模式,終端輸入。:
set FLASK_APP = app.py
set FLASK_ENV = development
flask run
優點:敏感變數存入系統環境變數,flask命令啟動時會去環境變數中讀配置。flask命令除了包含python命令的解釋功能
之前版本會在命令列看到服務自動重啟。而1.0.2版本看不到重啟資訊,但是生效。
可能出現的錯誤
- not found 檢查路由規則瀏覽器請求的url是否匹配
- Unicode decode error: postion 0 。flask 1.0。1原始碼gethostaddr方法,如果windows主機名是中文就會報錯。
- 修改程式碼,重啟伺服器,重新整理瀏覽器後結果沒有改變。原因ctrl+C後並沒有真正結束之前的服務。cmd中執行相關命令可以看到5000埠執行多個服務。這樣請求就到了之前的程式碼上。解決方法結束掉埠上的程序或重啟。
- aap.py同級目錄下新建了index.html, app.py檔案中 return render_template(“index.html”),結果404。原因flask是一個完整的框架,有自己的規定,render_template
函式會補全域名和template目錄,所以這個函式裡的引數並不是一個普通的相對路徑。
5.修改程式碼沒有生效。原因是pycharm啟動了多個程式例項。解決方法
“”"