简单介绍:

说明: 复杂的项目需要配置各种环境,若设置少可直接硬编码,设置多的话可通过加载配置/加载文件/加载变量的方式来设置

1

2

3

app.config.update(

DEBUG=True,

)

扩展: app.config是flask.config.Config类的实例,继承子PY内置数据结构dict,所以可以使用如上update方法,支持传入多个键值对,其实app.config内置很多配置变量(http://flask.pocoo.org/docs/0.11/config/#Builtin%20Configuration%20Values),而且app.config支持多种更新配置的方式

注意: 不管使用哪种配置方式,配置中的键名称都必须大写,不然不会被识别加载,千万注意~

加载配置:

说明: 支持通过配置文件模块名或导入后的模块对象加载配置

# 方式一: app.config.from_object('config')传递为字符串参数时则会自动加载根目录下的config.py文件且只会加载文件中变量名为大写的变量

1

2

3

4

5

6

7

8

9

10

11

12

13

#!/usr/bin/env python

# -*- coding: utf-8 -*-

"""

#

# Authors: limanman

# 51CTOBG: http://xmdevops.blog.51cto.com/

# Purpose:

#

"""

from __future__import absolute_import

# 说明: 导入公共模块

# 说明: 导入其它模块

AUTHOR= 'LIMANMAN'

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

#!/usr/bin/env python

# -*- coding: utf-8 -*-

"""

#

# Authors: limanman

# 51CTOBG: http://xmdevops.blog.51cto.com/

# Purpose:

#

"""

# 说明: 导入公共模块

from flaskimport Flask

# 说明: 导入其它模块

app= Flask(__name__)

app.config.from_object('config')

.route('/')

def hello_word():

return app.config.get('AUTHOR')

if __name__== '__main__':

app.run(host='0.0.0.0', port=9000)

# 方式二: app.config.from_object(config)传递为对象时则会自动加载该对象,且只会加载对象中属性名为大写的属性,既然是对象那就表示传递类也是可以的.

1

2

3

4

5

6

7

8

9

10

11

12

13

#!/usr/bin/env python

# -*- coding: utf-8 -*-

"""

#

# Authors: limanman

# 51CTOBG: http://xmdevops.blog.51cto.com/

# Purpose:

#

"""

from __future__import absolute_import

# 说明: 导入公共模块

# 说明: 导入其它模块

AUTHOR= 'LIMANMAN'

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

#!/usr/bin/env python

# -*- coding: utf-8 -*-

"""

#

# Authors: limanman

# 51CTOBG: http://xmdevops.blog.51cto.com/

# Purpose:

#

"""

# 说明: 导入公共模块

import config

from flaskimport Flask

# 说明: 导入其它模块

app= Flask(__name__)

app.config.from_object(config)

.route('/')

def hello_word():

return app.config.get('AUTHOR')

if __name__== '__main__':

app.run(host='0.0.0.0', port=9000)

加载文件:

说明: 支持通过文件名加载,且后缀名不限于.py,默认如果文件不存在会抛异常,可使用silent=True设置不抛异常

1

2

3

4

5

6

7

8

9

10

11

12

13

#!/usr/bin/env python

# -*- coding: utf-8 -*-

"""

#

# Authors: limanman

# 51CTOBG: http://xmdevops.blog.51cto.com/

# Purpose:

#

"""

from __future__import absolute_import

# 说明: 导入公共模块

# 说明: 导入其它模块

AUTHOR= 'LIMANMAN'

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

#!/usr/bin/env python

# -*- coding: utf-8 -*-

"""

#

# Authors: limanman

# 51CTOBG: http://xmdevops.blog.51cto.com/

# Purpose:

#

"""

# 说明: 导入公共模块

from flaskimport Flask

# 说明: 导入其它模块

app= Flask(__name__)

app.config.from_pyfile('config.py', silent=True)

.route('/')

def hello_word():

return app.config.get('AUTHOR')

if __name__== '__main__':

app.run(host='0.0.0.0', port=9000)

加载变量:

说明: 支持通过环境变量加载,默认如果文件不存在会抛异常,可使用silent=True设置不抛异常

set CONFIG=config.py

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

#!/usr/bin/env python

# -*- coding: utf-8 -*-

"""

#

# Authors: limanman

# 51CTOBG: http://xmdevops.blog.51cto.com/

# Purpose:

#

"""

# 说明: 导入公共模块

from flaskimport Flask

# 说明: 导入其它模块

app= Flask(__name__)

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

.route('/')

def hello_word():

return app.config.get('AUTHOR')or 'ERROR'

if __name__== '__main__':

app.run(host='0.0.0.0', port=9000)

注意: 特别是在Windows上set CONFIG=config.py时,千万别手欠把config.py加引号,而且视图函数一定要记得返回一个Response对象,由于None无法生成响应对象,所以一定要确定你返回的不是None

常用方式:

# 方式一: 在外部加载配置文件时通过from config import config来按需导入开发环境/预测试环境/正式环境不同的配置,通过app.config.from_object(config['default'])来加载配置

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

#!/usr/bin/env python

# -*- coding: utf-8 -*-

"""

#

# Authors: limanman

# 51CTOBG: http://xmdevops.blog.51cto.com/

# Purpose:

#

"""

from __future__import absolute_import

# 说明: 导入公共模块

# 说明: 导入其它模块

# 说明: 配置基类

class __Config(object):

AUTHOR= 'LIMANMAN'

# 说明: 开发环境

class __DevsConfig(__Config):

pass

# 说明: 预测环境

class __TestConfig(__Config):

pass

# 说明: 正式环境

class __ProdConfig(__Config):

pass

# 说明: 按需加载

config= {

'default': __DevsConfig,

'develop': __TestConfig,

'testing': __ProdConfig,

'product': __ProdConfig,

}

# 方式二: 在在外部加载配置文件时通过try ... except ...尝试导入本地配置,上线时删掉本地配置文件即可,记得忽略ImportError,不然线上导入找不到配置模块会报错

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

#!/usr/bin/env python

# -*- coding: utf-8 -*-

"""

#

# Authors: limanman

# 51CTOBG: http://xmdevops.blog.51cto.com/

# Purpose:

#

"""

from __future__import absolute_import

# 说明: 导入公共模块

# 说明: 导入其它模块

# 说明: 线上相关配置

# 说明: 覆盖线上配置

try:

from devs_configimport *

except ImportError, e:

pass

或关注我们的官方微博微信,还有更多惊喜哦~

pythonflask configlist.py_Python+Flask.0004.FLASK配置管理之三种方式加载外部配置相关推荐

  1. flask 操作mysql的两种方式-sqlalchemy操作

    flask 操作mysql的两种方式-sqlalchemy操作二.ORM sqlalchemy操作#coding=utf-8 # model.pyfrom app import dbclass Use ...

  2. flask 操作mysql的两种方式-sql操作

    flask 操作mysql的两种方式-sql操作一.用常规的sql语句操作 # coding=utf-8 # model.pyimport MySQLdbdef get_conn():conn = M ...

  3. flask 使用 SQLAlchemy 的两种方式

    1. 使用 flask-SQLAlchemy 扩展 # flask-ext-sqlalchemy.pyfrom flask import Flask from flask.ext.sqlalchemy ...

  4. python变量区变量保存与加载_python – Flask:使用全局变量将数据文件加载到内存中...

    我有一个大的 XML文件,它被打开,加载到内存中,然后由 Python类关闭.简化示例如下所示: class Dictionary(): def __init__(self,filename): f ...

  5. flask使用sqlit3的两种方式

    方式一:raw_sql import sqlite3 from flask import Flask, request, jsonifyapp = Flask(__name__)DATABASE_UR ...

  6. flask 验证ok 另外一种方式

    # coding=utf-8 import os,time from flask import Flask, render_template, send_from_directory, request ...

  7. flask中templates文件夹的html加载不了,但是static文件夹的html文件就可以加载

    前端水平太菜了,一个bug搞一下午 如果调用templates中的页面需要改成app.route里定义的路径 @app.route("/zero_shot_page") def z ...

  8. 【转】NGUI研究院之三种方式监听NGUI的事件方法(七)

    NGUI事件的种类很多,比如点击.双击.拖动.滑动等等,他们处理事件的原理几乎万全一样,本文只用按钮来举例. 1.直接监听事件 把下面脚本直接绑定在按钮上,当按钮点击时就可以监听到,这种方法不太好很不 ...

  9. (转)NGUI研究院之三种方式监听NGUI的事件方法

    NGUI事件的种类很多,比如点击.双击.拖动.滑动等等,他们处理事件的原理几乎万全一样,本文只用按钮来举例. 1.直接监听事件 把下面脚本直接绑定在按钮上,当按钮点击时就可以监听到,这种方法不太好很不 ...

最新文章

  1. 对用户信息的模糊查找java_java中对SQL模糊查询通配符%的处理
  2. 项目经理的几个重要转变
  3. Javascript高级程序设计——基本类型和引用类型的值
  4. 一道题,最小操作次数使数组元素相等引发的思考
  5. linux中menu命令,menucofig 详解
  6. C语言再学习 -- dmesg 命令
  7. WinCE中中断的处理过程(驱动开发人员角度)
  8. Excutor线程池
  9. Spring应用程序与JNDI连接池的集成测试
  10. C++primer 第 3 章 字符串、向量和数组 3 . 5 数组
  11. 怎样保存python源程序_五分钟教会你如何编写、保存与运行 Python 程序
  12. python包含多个元组的元组_Python数据结构(元组,列表,字典)
  13. dns迭代查询配置_人人都能看懂-关于dns服务基本知识
  14. C#LeetCode刷题之#496-下一个更大元素 I(Next Greater Element I)
  15. 2020 时代的开发人员关键词:开源和远程办公
  16. [Ext JS 4] 布局之实战二 - 中间区块不会自动伸展 (tab)续
  17. 【体系结构】Oracle段区块的个人理解
  18. vue openlayer 实现加载底图
  19. win7台式机系统调节显示屏亮度
  20. ThrealLocal原理讲解

热门文章

  1. python匿名函数lambda_python的匿名函数lambda解释及用法
  2. Activiti源码之建造者模式 Builder
  3. 用Hibernate tool从实体对象生成数据库表
  4. centos6 进入命令行_CentOS 6.x误删libc.so.6,紧急恢复
  5. memcache如何更新mysql_使用MySQL触发器如何实现memcache自动更新
  6. [蓝桥杯][算法提高VIP]盾神与积木游戏(贪心)
  7. [蓝桥杯][算法训练VIP]王、后传说(深搜+回溯)
  8. echarts的x轴数量固定_联轴器 多节膜片式夹紧螺丝固定型 DAAPC(对应LK5CWP)
  9. php获取其他php文件变量值,php 引入其他文件中的变量
  10. php使用5.2.,请问php5.2.5版本的$_FILES函数的用法?