• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

分享python Flask框架的中配置文件加载的五种使用方法

python 搞代码 4年前 (2022-01-09) 26次浏览 已收录 0个评论

这篇文章分享python Flask框架的中配置文件加载的五种使用方法

Flask配置文件管理的几种方式:

方法一:直接配置

#!/usr/bin/env python# encoding: utf-8from flask import Flaskimport timeapp = Flask(__name__)app.config['SEND_FILE_MAX_AGE_DEFAULT']=time.asctime()app.config['HOST']='www.aolens.cn'print [email protected]('/')def hello_world():   return 'Hello World!  %s  %s' %(app.config.get('SEND_FILE_MAX_AGE_DEFAULT'),app.config.get('HOST'))if __name__=='__main__':   app.run()

可以看到一个全局的大字典:

<Config {'JSON_AS_ASCII&#本文来源gaodai#ma#com搞@@代~&码*网239;: True, 'USE_X_SENDFILE': False, 'SESSION_COOKIE_PATH': None, 'SESSION_COOKIE_DOMAIN': None, 'SESSION_COOKIE_NAME': 'session', 'SESSION_REFRESH_EACH_REQUEST': True, 'LOGGER_HANDLER_POLICY': 'always', 'LOGGER_NAME': '__main__', 'DEBUG': False, 'SECRET_KEY': None, 'EXPLAIN_TEMPLATE_LOADING': False, 'MAX_CONTENT_LENGTH': None, 'APPLICATION_ROOT': None, 'SERVER_NAME': None, 'PREFERRED_URL_SCHEME': 'http', 'JSONIFY_PRETTYPRINT_REGULAR': True, 'TESTING': False, 'HOST': 'www.aolens.cn', 'PERMANENT_SESSION_LIFETIME': datetime.timedelta(31), 'PROPAGATE_EXCEPTIONS': None, 'TEMPLATES_AUTO_RELOAD': None, 'TRAP_BAD_REQUEST_ERRORS': False, 'JSON_SORT_KEYS': True, 'JSONIFY_MIMETYPE': 'application/json', 'SESSION_COOKIE_HTTPONLY': True, 'SEND_FILE_MAX_AGE_DEFAULT': 'Thu Mar 2 16:33:17 2017', 'PRESERVE_CONTEXT_ON_EXCEPTION': None, 'SESSION_COOKIE_SECURE': False, 'TRAP_HTTP_EXCEPTIONS': False}>

方法二:通过环境变量加载配置

创建一个环境变量文件。config.py

#内容为键值,不一定要是大字典里的HOST=localhostPOST=3306   #自己创建export CONFIG_SET=./config.py代码中:app.config.from_envvar('CONFIG_SET)@app.route('/')def hello_world():return "hello world %s %s" %(app.config.get('HOST'),app.config.get('POST'))

方法三:通过对象加载(常用)--from_object()

config对象代码--采用了 基于类继承的config结构,保存默认配置的Config类作为基类,其他类继承之。

创建一个文件Configlist.py

#!/usr/bin/env python# encoding: utf-8class Config():   #父类可以被下边的类继承到AUTHOR参数   AUTHOR='aolens'class DevelopmentConfig(Config):   DEBUG = True   SQL_URI='mysql://root:[email protected]/test'class ProductionConfig(Config):   SQL_URI='mysql://root:[email protected]/devops'   HOST='localhost'config ={ #将类写成字典的形式存储   'dev':DevelopmentConfig,   'pro':ProductionConfig,   'default':DevelopmentConfig}

调用Configlist.py

#!/usr/bin/env python# encoding: utf-8from flask import Flaskfrom configlist import *import timeapp = Flask(__name__)#对象加载,from config import *#第一种加载方式app.config.from_object(ProductionConfig)#第二种加载方式,加载简写的config短也可以加载的到#app.config.from_object(config['pro'])print [email protected]('/')    #/表示URL后边+/,也可使其他URI,访问就是IP+URIdef hello_world():   return 'Hello World!  %s  %s %s' %(app.config.get('SQL_URI'),app.config.get('HOST'),app.config.get('AUTHOR'))if __name__=='__main__':   app.run()

浏览器访问结果:

Hello World! mysql://root:[email protected]/devops localhost aolens

如何判断测试环境还是生产:#!/usr/bin/env python# encoding: utf-8from flask import Flaskfrom config2 import *import osimport timeapp = Flask(__name__)if os.path.exists("./pro"):   app.config.from_object(config['pro'])elif os.path.exists("./dev"):   app.config.from_object(DevelopmentConfig)  print [email protected]('/TEST')def hello_world():   return 'Hello World!  %s  %s %s' %(app.config.get('SQL_URI'),app.config.get('HOST'),app.config.get('AUTHOR'))if __name__=='__main__':   app.run()

方法四:通过配置文件--app.config.from_pyfile,config文件必须在app目录下

vim confile.pyHOST='locolhost'PORT=10000AUTHOR='aolens'from flask import Flaskapp.config.from_pyfile('./confile.py') #加载配置文件print [email protected]('/TEST')def hello_world():   return 'Hello World!  %s  %s %s' %(app.config.get('PORT'),app.config.get('HOST'),app.config.get('AUTHOR'))if __name__=='__main__':   app.run()

方法五:是对方法四的一种改进 ConfigParser模块 配置文件管理

ConfigParser简介:

是用来读取配置文件的包,配置文件中括号[]内包含的为session。section下面为类似于key-value的配置文件内容。

格式如下:

vim test.conf[api] #sessionport=11111 #optionpath=/data/api/log[web]port=1002path=/data/web/log

使用:confile.py

import ConfigParserdef getconfig(filename,section=''):   cf=ConfigParser.ConfigParser()   #实例化   cf.read(filename)   #读取配置文件   cf_items = dict(cf.items(section)) if cf.has_section(section)  else {}  #判断SECTION是否存在,存在把数据存入字典,没有返回空字典   return cf_itemsif __name__=='__main__':   conf =getconfig('test.conf','web')   print conf   print conf['port']   print conf.get('path')

运行结果:

{'path': '/data/web/log', 'port': '1002'}

1002

/data/web/log

调用:demo.py

#!/usr/bin/env python# encoding: utf-8from confile import getconfigfrom flask import Flaskapp = Flask(__name__)#直接配置@app.route('/TEST')def hello_world():     conf=getconfig('test.conf','api')     return 'Hello World!   %s' %(conf['port'])if __name__=='__main__':     app.run()

结果:

Hello World! 11111 #option

以上就是分享python Flask框架的中配置文件加载的五种使用方法的详细内容,更多请关注搞代码gaodaima其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:分享python Flask框架的中配置文件加载的五种使用方法

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址