Flask入門(一)
阿新 • • 發佈:2018-05-29
resp 新建項目 設置 install 路由 url get mkdir ubuntu
Flask入門(一)
1 安裝虛擬環境Mac,linux
sudo pip install virtualenv
? ubuntu系統
sudo apt-get install python-virtualenv
2 安裝flask
1 python3 環境下全局安裝 pip3 install flask 2 虛擬環境下virtualenv下安裝 首先先創建env虛擬環境 mkdir myproject #新建項目目錄 cd myproject virtualenv venv #安裝虛擬文件目錄venv source /venv/bin/activate #啟動新項目 pip3 install flask 註:部分編輯器創建虛擬環境,Python的解釋路徑需要更改. 3 pycharm中運行flask,選擇flask創建project,一定要加載創建的虛擬環境,找到虛擬環境目錄設置python解釋器,設置項目目錄
3 flask初起航
3.1最簡單的flask程序
from flask import Flask #導入類Flask app = Flask(__name__) #類的實例是WSGI應用程序App # route() 裝飾器把一個函數綁定到對應的 URL 上 @app.route(‘/‘) def hello(): return ‘hello python‘ #主函數入口 if __name__ == ‘__main__‘: app.run() 註: (1) __name__就是標識模塊的名字的一個系統變量。這裏分兩種情況:假如當前模塊是主模塊hello.py ,那麽此模塊名字__name__就是__main__,通過if判斷這樣就可以執行“__mian__:”後面的主函數內容; 假如此模塊是被import導入的,則此模塊名字__name__為文件名 : hello, 通過if判斷這樣就會跳過“__mian__:”,不執行後面的函數. (2) 啟動參數: debug 默認為False True debug=True不能用於生產環境 port 指定端口號 默認5001 host 指定主機名 host=‘0.0.0.0‘ 所有公網ip均可訪問 threaded 線程 True (3) 包括 Flask類引入,Flask類實例app,綁定路由,定義函數,設置主函數這5個過程. (4) debug = True 可以進入debug模式,既可以不重啟服務加載,又可以顯示頁面錯誤信息.
3.2 配置文件
1 新建一個config.py文件
2 在主app文件中導入這個文件,並且配置到app中,示例代碼如下
import config
app.config.from_object(config)
3 還有很多其他的參數,都是放在改配置文件中,如SECRET_KEY等
4 flask參數與變量
4.1 變量
1 變量作為參數傳遞: 語法<variable_name> #(單個參數) @app.route(‘/find_girl/<name>‘) #視圖名稱 def findGirl(name): return ‘Hello girl,name is {}‘.format(name) #(多個參數) @app.route(‘/find_girl/<name>/<age>‘) #視圖名稱 def findGirl(name,age): return ‘Hello girl,name is {},age is {}‘.format(name,age)
4.2 參數類型
(1) string 默認就為字符串
(2) int 限制傳遞進來的參數為 int類型 不做類型的轉換
(3) float 限制傳遞進來的參數為 float類型 不做類型的轉換
(4) path 將請求的路由地址後面的所有參數 都認為是一個參數的值 不再做路由的查找
@app.route(‘/arg_type/<string:arg>‘) #傳遞進來的數據 都更改為n字符串
@app.route(‘/arg_type/<int:arg>‘) #限制傳遞數據類型為int
@app.route(‘/arg_type/<float:arg>‘) #限制傳遞數據類型為float
@app.route(‘/arg_type/<path:arg>/‘) #將路由地址後面的所有 都認為是參數
5 構造響應與拋出異常
5.1 構造響應
下面我們來講下構造響應:
構造響應通過導入 from flask import make_response
可以使用 render_template() 方法來渲染模板 404模板頁面 : error.html
@app.route(‘/res‘)
def res():
response = make_response(render_template(‘error.html‘), 404)
return response
瀏覽器頁面結果: 響應結果
5.2 拋出異常
需要引入abort from flask import abort 先拋出錯誤狀態碼再捕獲
#拋出500錯誤碼
@app.route(‘/look_meizi/‘)
def look_meizi():
abort(500)
#捕獲指定的404狀態碼 支持錯誤頁面的定制
@app.errorhandler(404)
def page_not_found(e):
return ‘你請求的地址被外星人挾持走了!!!‘
#捕獲500服務器錯誤狀態碼
@app.errorhandler(500)
def server_error(e):
return e
6 重定向與構造URL
6.1 重定向
需要 from flask import redirect
def myRedirect():
#重定向到res綁定的URL
return redirect(‘/res‘)
#或者重定向帶參數的URL
return redirect(‘/find_girl/name‘)
6.2 構造URL(URL反轉):
- 在頁面重定向中會使用url反轉,url_for(‘hello‘)可以找到hello視圖函數對應的路由
- 在模板中,也會使用url反轉.
如果 Flask 能匹配 URL,那麽 Flask 可以生成它們嗎?當然可以
構造URL通過引入 from flask import url_for
@app.route(‘/redirect/‘)
def myRedirect():
#url_for 重定向接路由地址,redirect重定向到改地址,因此一般組合用起來很方便
#url_for 構造無參url
# return redirect(url_for(‘hello‘))
#url_for 構造帶參url,這樣不管find_girl的路由怎麽變,都可以重定向至該頁面
return redirect(url_for(‘find_girl‘,name=‘goodsunck‘))
Flask入門(一)