Python Flask フレームワークで構成ファイルを使用する 5 つの方法を共有します

高洛峰
リリース: 2017-03-10 17:08:11
オリジナル
3135 人が閲覧しました

この記事では、Python Flask フレームワークで設定ファイルの読み込みを使用する 5 つの方法を共有します

Flask 設定ファイル管理のいくつかの方法:

方法 1: 直接設定

#!/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()
ログイン後にコピー

大きなグローバル辞書を参照できます:

<構成 {'JSON_AS_ASCII': True、'USE_X_SENDFILE': False、'SESSION_COOKIE_PATH': なし、'SESSION_COOKIE_DOMAIN': なし、'SESSION_COOKIE_NAME': 'セッション'、'SESSION_REFRESH_EACH_REQUEST': True、'LOGGER_HANDLER_ POLICY':方法「、」 LOGGER_NAME': '__main__'、'DEBUG': False、'SECRET_KEY': なし、'EXPLAIN_TEMPLATE_LOADING': False、'MAX_CONTENT_LENGTH': なし、'APPLICATION_ROOT': なし、'SERVER_NAME': なし、'PREFERRED_URL_SCHEME': 'http' 、 'jsonify_prettyprint_regulal':true、 'testing':false、 'host': 'www.aolens.cn'、 'permannce_session_lifetime':datetime.timedelta(31)、 'propagate_exceptions':ne、 'templates_auto_reload' ':false、' json_sort_keys ':true、' jsonify_mimetype ':' application/json '、' session_cookie_httponly ':true、' thu send_file_max_age_default ':' thu mar 2 16:33:17 2017 '、 SESSION_COOKIE_SECURE': False, 'TRAP_HTTP_EXCEPTIONS': False}>


方法 2: 環境変数を使用して構成を読み込む

環境変数ファイルを作成します。 config.py

#内容为键值,不一定要是大字典里的
HOST=localhost
POST=3306   #自己创建
export CONFIG_SET=./config.py
代码中:
app.config.from_envvar(&#39;CONFIG_SET)
@app.route(&#39;/&#39;)
def hello_world():
return "hello world %s %s" %(app.config.get(&#39;HOST&#39;),app.config.get(&#39;POST&#39;))
ログイン後にコピー

方法 3: オブジェクトを介したロード (一般的に使用される) - from_object()

config オブジェクト コード - クラス継承に基づいて config 構造を使用し、デフォルトの構成 Config クラスを基本クラスとして保存し、他のクラスは継承しますそれ 。

ファイル Configlist.py を作成します

#!/usr/bin/env python
# encoding: utf-8
class Config():   #父类可以被下边的类继承到AUTHOR参数
   AUTHOR=&#39;aolens&#39;
class DevelopmentConfig(Config):
   DEBUG = True
   SQL_URI=&#39;mysql://root:password@192.168.1.101/test&#39;
class ProductionConfig(Config):
   SQL_URI=&#39;mysql://root:password@192.168.1.101/devops&#39;
   HOST=&#39;localhost&#39;
config ={ #将类写成字典的形式存储
   &#39;dev&#39;:DevelopmentConfig,
   &#39;pro&#39;:ProductionConfig,
   &#39;default&#39;: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[&#39;pro&#39;])
print app.config
@app.route(&#39;/&#39;)    #/表示URL后边+/,也可使其他URI,访问就是IP+URI
def hello_world():
   return &#39;Hello World!  %s  %s %s&#39; %(app.config.get(&#39;SQL_URI&#39;),app.config.get(&#39;HOST&#39;),app.config.get(&#39;AUTHOR&#39;))
if __name__==&#39;__main__&#39;:
   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[&#39;pro&#39;])
elif os.path.exists("./dev"):
   app.config.from_object(DevelopmentConfig)  
print app.config
@app.route(&#39;/TEST&#39;)
def hello_world():
   return &#39;Hello World!  %s  %s %s&#39; %(app.config.get(&#39;SQL_URI&#39;),app.config.get(&#39;HOST&#39;),app.config.get(&#39;AUTHOR&#39;))
if __name__==&#39;__main__&#39;:
   app.run()
ログイン後にコピー

方法 4: 設定を渡すファイル - app.config.from_pyfile、構成ファイルはアプリ ディレクトリにある必要があります

vim confile.py
HOST=&#39;locolhost&#39;
PORT=10000
AUTHOR=&#39;aolens&#39;
from flask import Flask
app.config.from_pyfile(&#39;./confile.py&#39;) #加载配置文件
print app.config
@app.route(&#39;/TEST&#39;)
def hello_world():
   return &#39;Hello World!  %s  %s %s&#39; %(app.config.get(&#39;PORT&#39;),app.config.get(&#39;HOST&#39;),app.config.get(&#39;AUTHOR&#39;))
if __name__==&#39;__main__&#39;:
   app.run()
ログイン後にコピー

方法 5: 方法 4 の ConfigParser モジュール構成ファイル管理の改良版です

ConfigParser の概要:

は構成ファイル パッケージを読み取るために使用されます, 設定ファイルの括弧[]内に含まれるものがセッションです。このセクションの下には、キーと値に似た構成ファイルの内容が表示されます。

形式は次のとおりです:

vim test.conf
[api] #session
port=11111 #option
path=/data/api/log
[web]
port=1002
path=/data/web/log
ログイン後にコピー

使用:configure.py

import ConfigParser
def getconfig(filename,section=&#39;&#39;):
   cf=ConfigParser.ConfigParser()   #实例化
   cf.read(filename)   #读取配置文件
   cf_items = dict(cf.items(section)) if cf.has_section(section)  else {}  #判断SECTION是否存在,存在把数据存入字典,没有返回空字典
   return cf_items
if __name__==&#39;__main__&#39;:
   conf =getconfig(&#39;test.conf&#39;,&#39;web&#39;)
   print conf
   print conf[&#39;port&#39;]
   print conf.get(&#39;path&#39;)
ログイン後にコピー

実行結果:

{'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(&#39;/TEST&#39;)
def hello_world():
     conf=getconfig(&#39;test.conf&#39;,&#39;api&#39;)
     return &#39;Hello World!   %s&#39; %(conf[&#39;port&#39;])
if __name__==&#39;__main__&#39;:
     app.run()
ログイン後にコピー

結果:

Hello World!

以上がPython Flask フレームワークで構成ファイルを使用する 5 つの方法を共有しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!