1. 程式人生 > >Flask入門(一)

Flask入門(一)

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入門(一)