Python Flask 配置文件


1. 什么是配置文件?

就是當程序調用的一些參數,文件路徑,方法或者類放到一個文件中,
當下次需要修改的一個參數的時候,不用再從所有關聯的程序中找到該參數挨個修改,
比較繁瑣。像Django中,程序啟動的時候需要加載setting.py文件,該文件配置包含
中間件,數據庫鏈接,文件路徑,靜態文件模板路徑等參數,當視圖函數鏈接數據庫或
創建靜態文件的時候根據配置文件找到參數即可進行鏈接或創建文件等等操作,修改
也是如此,只要找到參數修改配置參數即可。

2. 使用配置文件

from flask import Flask,session,current_app

# 創建配置
app = Flask(__name__)

app.secret_key ='sdfsdfsdf'

# 方式一:
# app.config['SESSION_COOKIE_NAME'] = 'session_lvning'  #
# 方式二:
# app.config.from_pyfile0('settings.py')
# 方式三:
# import os
# os.environ['FLAKS-SETTINGS'] = 'settings.py'
# app.config.from_envvar('FLAKS-SETTINGS')
# 方式四:推薦使用
app.config.from_object('settings.DevConfig')


@app.route('/index',endpoint='xx',methods=['GET'])
def index():
    print(current_app.config['DB'])
    session['xx3'] = 123
    return "xxx"

if __name__ == '__main__':
    # app.__call__
    app.run()

3. 配置文件

class BaseConfig(object):
    NNN = 123

class TestConfig(BaseConfig):
    DB = '127.0.0.1'

class DevConfig(BaseConfig):
    DB = '192.168.1.1'

class ProConfig(BaseConfig):
    DB = '47.18.1.1'

4. 項目案例:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author:supery

import importlib
from flask import Flask,request,current_app

app = Flask(__name__)

app.config.from_object('setting.BaseConfig')


@app.route('/index',endpoint='index',methods=['GET'])
def index():
    print(current_app.config['MESSAGE_CLASSES'])
    setting = current_app.config['MESSAGE_CLASSES']
    for cls_path in setting:
        module_path,class_name = cls_path.rsplit('.',maxsplit=1)
        m = importlib.import_module(module_path)
        obj = getattr(m,class_name)()
        obj.send('哇呀呀','import_model','906906659@qq.com','supery007',)
    return '123'

if __name__ == '__main__':
    app.run()

5. MSG配置參數

class BaseConfig(object):
    NNN = 123
    MESSAGE_CLASSES = [
        'utils.message.email.Email',
        'utils.message.msg.Msg',
        'utils.message.wx.WeChat',
        'utils.message.dingding.DingDing',
    ]

6. 測試結果

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM