python Flask框架的中配置文件加载的五中方法使用
2017-03-08 16:51
1211 查看
Flask配置文件管理的几种方式:
方法一:直接配置
可以看到一个全局的大字典:
<Config {'JSON_AS_ASCII': 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
config对象代码--采用了 基于类继承的config结构,保存默认配置的Config类作为基类,其他类继承之。
创建一个文件Configlist.py
Hello World! mysql://root:password@192.168.1.101/devops localhost aolens
ConfigParser简介:
是用来读取配置文件的包,配置文件中括号[]内包含的为session。section下面为类似于key-value的配置文件内容。
格式如下:
{'path': '/data/web/log', 'port': '1002'}
1002
/data/web/log
调用:demo.py
Hello World! 11111 #option
方法一:直接配置
#!/usr/bin/env python # encoding: utf-8 from flask import Flask import time app = Flask(__name__) app.config['SEND_FILE_MAX_AGE_DEFAULT']=time.asctime() app.config['HOST']='www.aolens.cn' print app.config @app.route('/') 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': 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=localhost POST=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-8 class Config(): #父类可以被下边的类继承到AUTHOR参数 AUTHOR='aolens' class DevelopmentConfig(Config): DEBUG = True SQL_URI='mysql://root:password@192.168.1.101/test' class ProductionConfig(Config): SQL_URI='mysql://root:password@192.168.1.101/devops' HOST='localhost' config ={ #将类写成字典的形式存储 'dev':DevelopmentConfig, 'pro':ProductionConfig, 'default':DevelopmentConfig }调用Configlist.py
#!/usr/bin/env python # encoding: utf-8 from flask import Flask from configlist import * import time app = Flask(__name__) #对象加载,from config import * #第一种加载方式 app.config.from_object(ProductionConfig) #第二种加载方式,加载简写的config短也可以加载的到 #app.config.from_object(config['pro']) print app.config @app.route('/') #/表示URL后边+/,也可使其他URI,访问就是IP+URI 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()浏览器访问结果:
Hello World! mysql://root:password@192.168.1.101/devops localhost aolens
如何判断测试环境还是生产: #!/usr/bin/env python # encoding: utf-8 from flask import Flask from config2 import * import os import time app = Flask(__name__) if os.path.exists("./pro"): app.config.from_object(config['pro']) elif os.path.exists("./dev"): app.config.from_object(DevelopmentConfig) print app.config @app.route('/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.py HOST='locolhost' PORT=10000 AUTHOR='aolens' from flask import Flask app.config.from_pyfile('./confile.py') #加载配置文件 print app.config @app.route('/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] #session port=11111 #option path=/data/api/log [web] port=1002 path=/data/web/log使用:confile.py
import ConfigParser def getconfig(filename,section=''): cf=ConfigParser.ConfigParser() #实例化 cf.read(filename) #读取配置文件 cf_items = dict(cf.items(section)) if cf.has_section(section) else {} #判断SECTION是否存在,存在把数据存入字典,没有返回空字典 return cf_items if __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-8 from confile import getconfig from flask import Flask app = 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的WEB框架Flask中使用多个配置文件的解决方法
- 在python的WEB框架Flask中使用多个配置文件的解决方法
- Python的Flask框架使用Redis做数据缓存的配置方法
- Python使用Flask框架同时上传多个文件的方法
- Python的Flask框架使用Redis做数据缓存的配置方法
- 以Flask为例讲解Python的框架的使用方法
- 为Python的Tornado框架配置使用Jinja2模板引擎的方法
- Python使用ConfigParser模块操作配置文件的方法
- Python的Flask框架中配置多个子域名的方法讲解
- 以Flask为例讲解Python的框架的使用方法
- python使用Flask框架获取用户IP地址的方法
- 为Python的Tornado框架配置使用Jinja2模板引擎的方法
- 【从零开始】Python的框架Flask环境配置流程以及Postman使用(第一课)
- Python的Flask框架应用程序实现使用QQ账号登录的方法
- Python实现加载及解析properties配置文件的方法
- Python使用Flask框架获取当前查询参数的方法
- Struts2使用通配符加载配置文件和通配符方法的底层实现学习
- 解决“Visual Studio 要求设计器使用文件中的第一个类。移动类代码使之成为文件中的第一个类,然后尝试重新加载设计器。”方法
- 加载spring配置文件的常用三种方法
- C#中配置文件的使用方法(连接字符串的保存)