Flask
- 所有的Flask程序都必須創建一個程序實例
- Flask類的構造函數只有一個必須指定的參數,即程序主模塊或包的名字
- Flask 用這個參數決定程序的根目錄,以便稍後能夠找到相對於程序根目錄的資源文件位置。
編寫一個hello world
- 首先需要導入Flask類,並創建類的對象
from flask import Flask
app = Flask(__name__)
- 裝飾器的作用是將路由映射到視圖函數
- 程序實例需要知道對每個URL請求運行哪些代碼,所以要保存一個URL到Python函數的映射關係。
- 在Flask程序中定義路由可以使用實例對象提供的app.route裝飾器,把裝飾器的函數註冊爲路由
@app.route('/')
def home():
return 'Hello World'
- 執行Flask實例對象的run方法,啓動web服務器
- name== 'main’在這裏確保了直接執行這個腳本時才啓動開發web服務器,如果這個腳本由其他腳本引入,程序嘉定父級腳本會啓動不同的服務器,因此就不會執行app.run()
if __name__== '__main__':
app.run()
Flask程序實例在創建的時候,需要默認傳入當前Flask程序所指定的包(模塊)
import_name
- Flask程序所在的包或模塊,傳__name__就可以
- 它可以決定Flask在訪問靜態文件時查找的路徑
static_url_path
- 靜態文件訪問路徑,可以不傳,默認爲/ + static_folder
static——folder
- 靜態文件存儲的文件夾,可以不傳,默認爲static
template_folder
- 模板文件存儲的文件夾,可以不傳,默認爲templates
Flask將配置信息保存到了app.config屬性中,該屬性可以按照字典類型進行操作。
主要的使用有三種方式:
- 從配置對象中加載(可以繼承)
app.config.from_object(你定義的配置對象)
from flask import Flask
class Default(object):
MY_SQL = 'mysql address '
class DeafultConfig(Default):
REDIS = 'redis address'
app = Flask(__name__)
# 從配置對象中加載
app.config.from_object(DeafultConfig)
@app.route('/')
def index():
print(app.config['MY_SQL'])
print(app.config['REDIS'])
return '<h1>Hello World!</h1>'
if __name__ == '__main__':
app.run()
- 從配置文件中加載
app.config.from_pyfile(配置文件的名字加後綴,不需要導包)
from flask import Flask
app = Flask(__name__)
# 導入配置文件
app.config.from_pyfile('settings.py')
@app.route('/')
def index():
print(app.config.get('SECRET_KEY'))
return '<h1>Hello World!</h1>'
if __name__ == '__main__':
app.run()
- 從環境變量中加載
- Flask使用環境變量加載配置的本質是通過環境變量值找到配置文件,再讀取配置文件的信息,其使用方式爲
app.config.from_envvar('環境變量名')
關於silent的說明:
-
表示系統環境變量中沒有設置相應值時是否拋出異常
-
False 表示不安靜的處理,沒有值時報錯通知,默認爲False
-
True 表示安靜的處理,即時沒有值也讓Flask正常的運行下去