Table of Contents
Flask安裝配置
02認識flask
框架:能被服務器調用,根據客戶端請求處理形成返回數據
輕量級框架:代表除了框架核心功能,沒有提供豐富的工具組件,組件之間很少相互耦合,自由定製,功能擴展時更方便
Flask基於werkzeug工具箱(支撐WSGI協議)形成框架,模板的功能是由jinja2來的
Django使用命令新建工程,連目錄層級都是他搭建好的,manage.py管理工程、數據庫遷移,有緩存機制、文件存儲系統、用戶認證-->快速開發
Flask使用擴展包-->要做什麼那是你的自由
常用擴展包:
Flask-SQLalchemy:數據庫操作
Flask-migrate:遷移數據庫
Flask-Mail郵件
Flask-WTF表單
Flask-Login:認證用戶狀態
Flask-restful:開發API
Flask-bootstrap:前端twitter Bootstrap框架
03虛擬環境
虛擬環境安裝,避免包混亂,版本衝突,保證程序只能訪問虛擬環境中的包,不會影響全局python解釋器
Virtualenv虛擬環境原理:
虛擬環境是互相隔離的目錄,能看到的變化只是當前目錄前面多了個(flask)
在虛擬環境中pip安裝不能sudo,否則變成系統環境,無法隔離
其實目錄下多了. virtualenv隱藏目錄,其中放了所有新建虛擬環境時安裝的:
1). virtualenv/flask_py2/bin目錄,其中存放了python解釋所需的python2.7文件等
2). virtualenv/flask_py2/lib/python2.7/site-packages/下存放了flask等用pip安裝的工具包。
查看是否安裝virtualenv:
>>> virtualenv --version |
我沒有安裝這個,同時用習慣了anaconda的虛擬環境,就直接在之前用過的flask虛擬環境做了,此處使用的py2,課程使用的flask==0.10.1,我使用的flask==1.1.1
activate py2_flask |
查看當前虛擬環境安裝過哪些工具包(好使)
pip list |
或(更好使)
pip freeze |
將工具包輸出到requirements文件,使用>重定向
(py2_flask) D:\>cd D:\anacondaProject (py2_flask) D:\anacondaProject>pip freeze > requirements.txt |
在新環境中安裝時使用:-r可將它逐行讀取安裝
pip install -r requirements.txt |
App對象的初始化和配置
01 app初始化參數說明
from flask import Flask app = Flask(__name__) |
__name__表示當前模塊的名字,flask以這個模塊所在的目錄爲總目錄,默認這個目錄中的static爲靜態目錄,templates爲模板目錄
print(__name__) |
直接在該文件打印結果: __main__ |
一般模塊的名字是文件名,但是作爲啓動模塊的名字卻是固定的
import demo |
作爲模塊導入打印結果: demo |
使用__name__等同於
app = Flask("__main__") |
在static建立靜態文件index.html或jpg嘗試訪問
activate py2_flask cd /d D:\anacondaProject\where2go\webapp python app.py |
http://localhost/static/img/bg.jpg |
初始化參數:Flask()中傳的
import_name:__name__
static_url_path:訪問靜態資源對應url
static_folder:靜態文件存放目錄,默認static
template_folder:模板文件存放目錄,默認templates
app = Flask(__name__, static_url_path="/python", static_folder="static", template_folder="templates") |
http://localhost/python/img/bg.jpg |
03 flask的配置參數設置
法一:創建config.cfg文件
DEBUG=TURE |
使用config文件:
app.config.from_pyfile("config.cfg") |
法二:使用對象配置參數
class Config(object): DEBUG = True app.config.from_object(Config) |
法三:修改config字典
app.config["DEBUG"]=True |
04 讀取配置參數
配置文件添加參數:
class Config(object): DEBUG = True ITCAST="python" app.config.from_object(Config) |
在視圖函數中要讀取參數值:
如果函數在app中,可以得到全局對象,app.config可以當作字典取值
@app.route('/') def welcome(): app.config.get("ITCAST") |
在其他文件中視圖不能直接得到app對象,使用app的全局代理
from flask import current_app |
current_app.config.get("ITCAST") |
05 app.run的使用
app.run(host= '0.0.0.0', port=80, debug=True) |