最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

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

来源:动视网 责编:小采 时间:2020-11-27 14:25:44
文档

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

分享pythonFlask框架的中配置文件加载的五种使用方法:这篇文章分享python Flask框架的中配置文件加载的五种使用方法Flask配置文件管理的几种方式:方法一:直接配置#!/usr/bin/env python # encoding: utf-8 from flask import Flask import time app = Flask(__name__)
推荐度:
导读分享pythonFlask框架的中配置文件加载的五种使用方法:这篇文章分享python Flask框架的中配置文件加载的五种使用方法Flask配置文件管理的几种方式:方法一:直接配置#!/usr/bin/env python # encoding: utf-8 from flask import Flask import time app = Flask(__name__)


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

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

方法一:直接配置

#!/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

文档

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

分享pythonFlask框架的中配置文件加载的五种使用方法:这篇文章分享python Flask框架的中配置文件加载的五种使用方法Flask配置文件管理的几种方式:方法一:直接配置#!/usr/bin/env python # encoding: utf-8 from flask import Flask import time app = Flask(__name__)
推荐度:
标签: 方法 python python的
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top