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

简单介绍:

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/244269.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

html引用c 变量,在jsp页面中定义全局变量,供其他页面引用

一、在一个jsp中引用另一个jsp的方法有:1.使用 jsp include指令(常用):file属性是必填的(绝对或相对路径),但它不支持任何的表达式,也不允许通过?挂参方式来传递参数。注意:一般页面的top和bottom固定的时候…

bootstraptable控制分页_bootstrap table分页(前后端两种方式实现)

bootstrap table分页的两种方式:前端分页:一次性从数据库查询所有的数据,在前端进行分页(数据量小的时候或者逻辑处理不复杂的话可以使用前端分页)服务器分页:每次只查询当前页面加载所需要的那几条数据bootstrap 下载地址&#x…

gitlab 构建tag_GitLab常用命令 分支 Tag 配置 操作

一、从SVN迁出到本地Git仓库(还没有配置Git仓库的,直接看第八条)git svn clone "" ##注意路径需要双引号引起来二、在远程仓库中新建对应名称的项目http://git.xxx.cn (公司的gitlab地址)三、将远程仓库项目与本地仓库代码做好映射1. 建立…

html表单赋值提交,jQuery自动给表单赋值

/** jquery 初始化form插件,传入一个json对象,为form赋值* version: 1.0.0-2013.06.24* requires jQuery v1.5 or later* Copyright (c) 2013* note: 1、此方法能赋值一般所有表单,但考虑到checkbox的赋值难度,以及表单中很少用ch…

html5 hgroup,HTML5 hgroup 标签

实例HTML5 使用 对标题进行组合:Welcome to my WWFFor a living planetThe rest of the content...尝试一下 浏览器支持IE 9、Firefox、Opera、Chrome 和 Safari 支持 标签。注释:IE 8 或更早版本的 IE 浏览器不支持 标签。标签定义及使用说明标签被用来…

easyexcel和poi对比_POI 和 EasyExcel

POI 和 easyExcel 讲解转自狂神老师,仅作为个人笔记使用一、POI常用进程1、将用户信息导出为excel表格(导出数据....)2、将Excel表中的信息录入到网站数据库(习题上传....)开发中经常会设计到excel的处理,如导出Excel,导入Excel到数据库中&am…

python类定义学生信息_Python学生信息管理系统(注释最详细,小白都看的懂)

1 importos23 #学生系统基本功能4 #增删查改56 #如何实现该系统7 #1.显示系统功能界面8 #2.让用户选择功能9 #3.判断用户选择的指定功能,然后完成相应的操作(增删查改)1011 #面向对象分析12 #1.抽象类13 #学生系统管理类 学生类14 #2.分析类的成员1516 #学生系统管理…

git 拉取远端仓库_git 从远程仓库拉取代码

使用git 直接提交的话 直接 push获取最新版本 有两种 拉取 和 获取 pull 和 fetchgit pull 从远程拉取最新版本 到本地 自动合并 merge git pull origin mastergit fetch 从远程获取最新版本 到本地 不会自动合并 merge git fetch origin maste…

人机接口要学哪些计算机语言,智能人机接口

智能人机接口一般又简称为智能接口,是为了建立和谐的人机交互环境,在和谐的条件下实现智能,以智能的目的实现和谐,使人与计算机之间的交互能够像人与人之间的交流一样自然、方便,它对于改善人机交互的友好性&#xff0…

layer中嵌套的页面如何操作父页面_layui框架中layer父子页面交互详细解说

本文主要介绍了layui框架中layer父子页面交互的方法,结合实例形式分析了layer父子页面交互的常用技巧以及layer弹出多个iframe找到父页面的操作方法,需要的朋友可以参考下,希望给大家的学习有所启发。本文实例讲述了layui框架中layer父子页面交互的方法。分享给大家…

jquery获取html代码怎么写,jQuery从html代码中获取对应标签的写法

1、示例代码获取id为t1标签$(#t1)2、示例代码获取div标签$(.t2)3、示例代码dagagagragagdagagagragag获取所有的p标签$(p)4、示例代码获取id为tt的标签和p标签以及span标签$("#tt p span")注意空格的用法5、示例代码如果找找到该代码中所有的t5标签和span标签以及a标…

html5 canvas实际应用,Html5 Canvas入门及经典应用

Html5 Canvas入门及经典应用时间:2019-02-15 来源:华清远见canvas想必对于前端的工程师都不陌生了,它是 HTML5 新增的「画布」元素,是HTML5 的一大亮点,canvas翻译过来其实就是画布的意思,它可以替代fl…

redminote8自动关机怎么回事_红米Note8Pro手机值得入手吗 红米Note8Pro手机全面评测...

六、续航:4500mAh大电池与G90T的碰撞发手机发布之前,Redmi品牌总经理卢伟冰在微博上也说过,G90T的12nm处理器在功耗方面和7nm处理器会有10%左右的差距。为了弥补功耗的差距,红米Note 8 Pro采用了4500mAh的大电池。大电池和12nm芯碰…

计算机机房用户不规则行为,网络及网管机房管理理论练习

一、填空题:1、机房行为管理的宗旨是( 以人为本)。2、机房管理的内涵构架上至少应包括“(环境)、人、(机)、网络和管理”五个方面。3、对于从事机房管理的工作人员,不仅要学会管理(机房设备),也得学会管理(…

python异步io 队列_python 学习笔记九 队列,异步IO

queue (队列)队列是为线程安全使用的。1.先入先出import queue#测试定义类传入队列class Foo(object):def __init__(self,n):self.nnnew queue.Queue(maxsize3)new.put(1)new.put(Foo(1),timeout2) # 超时时间后,抛出队列full异常new.put([1, 2, 3],timeout2)print…

html 5 canvas flash,为什么使用HTML5 Canvas创建内容比使用Flash创作要复杂得多?

好问题.我一直在使用< canvas>几年,我也是一名前Flash开发人员.我不认为你错过了什么.嗯,< canvas>,你知道,它必须看起来比Flash更复杂:). Flash是一种客户端工具.它提供了一个非常棒的GUI,大量的视觉和即时功能,并允许用户有时编写动画而无需一行代码(actionscrip…

vue 项目难点_vue项目中遇到的问题汇总

前&#xff1a;项目用到的技术栈为webpackvue2.xpugstyluselementUI1、IE9中&#xff0c; 请求服务器数据并用v-for渲染option标签出现只显示第一个字的问题解决方法&#xff1a;/*** 强制重绘页面的select 输入框&#xff0c;解决IE9只显示单个字符串问题* param useNextTick …

计算机工程师的英语求职信,软件工程师的英文求职信范文

软件工程师的英文求职信范文软件工程师的英文求职信范文name:CNrencai sex: maleethnic: chinese political features: membersacademic qualifications (degree): bachelor of professional: industrial electric automationtel :0755-12345678 mobile: 139xxxxxxfutian distr…

matlab用diag直接使用错误_matlab中的diag(diag(a))是什么意思?

展开全部取出62616964757a686964616fe4b893e5b19e31333365643533a阵的对角元&#xff0c;然后构建一个以a对角元为对角的对角矩阵。A 1 23 4>> diag(diag(A))ans 1 00 4matlab中diag用法&#xff1a; diag(v,k)以向…

计算机控制系统为什么会受到干扰,浅谈计算机控制系统中的干扰及其抑制措施...

摘要&#xff1a;具有良好的抗干扰性&#xff0c;是衡量计算机控制系统可靠性的一个标准。国内外的学者&#xff0c;曾经研究过这一课题&#xff0c;认为抗抗干扰性的理论十分复杂&#xff0c;技术也十分精密&#xff0c;需要大量的实践才能解决。本文通过对计算机控制系统中存…