1. 程式人生 > 其它 >1-flask 工程搭建的時候一些引數說明

1-flask 工程搭建的時候一些引數說明

1:hello word flask

from flask import Flask

#flask 類接受一個__nmae__ 引數
app = Flask(__name__)

#裝飾器的作用事將路由對映到函式中
@app.route('/')
def index():
    return "hello word"


#falsk 應用程式run啟動web應用程式
if __name__ == '__main__':
    app.run()

2:引數說明

1 Flask物件初始化引數

Flask 程式例項在建立的時候,需要預設傳入當前 Flask 程式所指定的包(模組),接下來就來詳細檢視一下 Flask 應用程式在建立的時候一些需要我們關注的引數:

  • import_name
    • Flask程式所在的包(模組),傳__name__就可以
    • 其可以決定 Flask 在訪問靜態檔案時查詢的路徑
  • static_url_path
    • 靜態檔案訪問路徑,可以不傳,預設為:/ + static_folder
  • static_folder
    • 靜態檔案儲存的資料夾,可以不傳,預設為static
  • template_folder
    • 模板檔案儲存的資料夾,可以不傳,預設為templates

   

eg:

app = Flask(__name__, static_url_path='/url_path_param', static_folder='folder_param
')

2 應用程式配置引數

對於Flask物件初始化引數僅僅設定的是Flask本身的屬性,比如:

  • Flask從哪裡讀取靜態檔案
  • Flask從哪裡讀取模板檔案
  • ...

等等。

應用程式配置引數設定的是一個Web應用工程的相關資訊,比如:

  • 資料庫的連線資訊
  • 日誌的配置資訊
  • 自定義的配置資訊
  • ...

等等

作用

集中管理專案的所有配置資訊

使用方式

Django將所有配置資訊都放到了settings.py檔案中,而Flask則不同。

Flask將配置資訊儲存到了app.config屬性中,該屬性可以按照字典型別進行操作。

讀取

  • app.config.get(name)
  • app.config[name]

設定

主要使用以下三種方式:

1:從配置物件中載入——app.config.from_object()

class DefaultConfig(object):
    """預設配置"""
    SECRET_KEY = 'TPmi4aLWRbyVq8zu9v82dWYW1'

app = Flask(__name__)

app.config.from_object(DefaultConfig)

@app.route("/")
def index():
    print(app.config['SECRET_KEY'])
    return "hello world"
  • 應用場景:作為預設配置寫在程式程式碼中
  • 優點:可以繼承

2:從配置檔案中載入——app.config.from_pyfile()

新建一個配置檔案settting.py

SECRET_KEY = 'TPmi4aLWRbyVq8zu9v82dWYW1'

flask 應用程式中

app = Flask(__name__)

app.config.from_pyfile('setting.py')

@app.route("/")
def index():
    print(app.config['SECRET_KEY'])
    return "hello world"
  • 應用場景——在專案中使用固定的配置檔案

3:從環境變數中載入

在Linux中設定環境變數的方式如下

export 變數名=變數值  # 設定
echo $變數名  # 讀取

# 例如
export ITCAST=python
echo $ITCAST

Flask使用環境變數載入配置的本質是通過環境變數值找到配置檔案,再讀取配置檔案的資訊,其使用方式為

app.config.from_envvar('環境變數名')

環境變數的值為配置檔案的絕對路徑

先在終端中執行如下命令

export PROJECT_SETTING='~/setting.py'

再執行如下程式碼

pp = Flask(__name__)

app.config.from_envvar('PROJECT_SETTING', silent=True)

@app.route("/")
def index():
    print(app.config['SECRET_KEY'])
    return "hello world"

silent:

  • False 表示不安靜的處理,沒有值時報錯通知,預設為False
  • True 表示安靜的處理,即時沒有值也讓Flask正常的執行下去

專案中的常用方式

使用工廠模式建立Flask app,並結合使用配置物件與環境變數載入配置

  • 使用配置物件載入預設配置
  • 使用環境變數載入不想出現在程式碼中的敏感配置資訊
def create_flask_app(config):
    """
    建立Flask應用
    :param config: 配置物件
    :return: Flask應用
    """
    app = Flask(__name__)
    app.config.from_object(config)

    # 從環境變數指向的配置檔案中讀取的配置資訊會覆蓋掉從配置物件中載入的同名引數
    app.config.from_envvar("PROJECT_SETTING", silent=True)
    return app

class DefaultConfig(object):
    """預設配置"""
    SECRET_KEY = 'itcast1'

class DevelopmentConfig(DefaultConfig):
    DEBUG=True

# app = create_flask_app(DefaultConfig)
app = create_flask_app(DevelopmentConfig)

@app.route("/")
def index():
    print(app.config['SECRET_KEY'])
    return "hello world"

3 app.run 引數

app.run(host="0.0.0.0", port=5000, debug = True)

關於DEBUG除錯模式

  1. 程式程式碼修改後可以自動重啟伺服器
  2. 在伺服器出現相關錯誤的時候可以直接將錯誤資訊返回到前端進行展示