flask的配置设置的几种方式

   Flask的配置对象(config)是一个字典(dict)的子类(subclass),所以你可以把配置用键值对的方式存储进去。

1、一些重要的配置,可以设置在系统环境变量里,又或者放到某个服务器里,用的时候下载配置文件并读取配置

# 在linux系统里设置环境变量
export MAIL_USERNAME=me@greyli.com

# 用的时候取环境变量
import os
from flask import Flask

app = Flask(__name__)
app.config['MAIL_USERNAME'] = os.getenv('MAIL_USERNAME', 'me@greyli.com') # os.geteve(key,default=None)  Get an environment variable, return None if it 
# doesn't exist.The optional second argument can specify an alternate default.

2、直接写入主脚本

from flask import Flask

app = Flask(__name__)
app.config['SECRET_KEY'] = 'some secret words'
app.config['DEBUG'] = True
app.config['ITEMS_PER_PAGE'] = 10

或者写成下面的方式:

from flask import Flask

app = Flask(__name__)
app.config.update(
    DEBUG=True,
    SECRET_KEY='some secret words',
    ITEMS_PER_PAGE=10
)

3、单独的配置文件configure.py

SECRET_KEY = 'some secret words'
DEBUG = True
ITEMS_PER_PAGE = 10

在创建程序实例后导入配置

import config

...
app = Flask(__name__)
app.config.from_object(configure)
...

4、为开发环境、测试环境、生成环境、预发布环境创建不同的测试类

 1 import os
 2 basedir = os.path.abspath(os.path.dirname(__file__))
 3 
 4 
 5 class BaseConfig:  # 基本配置类
 6     SECRET_KEY = os.getenv('SECRET_KEY', 'some secret words')
 7     ITEMS_PER_PAGE = 10
 8 
 9 
10 class DevelopmentConfig(BaseConfig):
11     DEBUG = True
12     SQLALCHEMY_DATABASE_URI = os.getenv('DEV_DATABASE_URL', 'sqlite:///' + os.path.join(basedir, 'data-dev.sqlite')
13 
14 
15 class TestingConfig(BaseConfig):
16     TESTING = True
17     SQLALCHEMY_DATABASE_URI = os.getenv('TEST_DATABASE_URL', 'sqlite:///' + os.path.join(basedir, 'data-test.sqlite')
18     WTF_CSRF_ENABLED = False
19 
20 
21 config = {
22     'development': DevelopmentConfig,
23     'testing': TestingConfig,
24 
25     'default': DevelopmentConfig
26 }
config.py

导入配置

from config import config  # 导入存储配置的字典

...
app = Flask(__name__)
app.config.from_object(config['development'])  # 获取相应的配置类
...

5、附下flask内置的配置列表

DEBUGenable/disable debug mode
TESTINGenable/disable testing mode
PROPAGATE_EXCEPTIONSexplicitly enable or disable the propagation of exceptions. If not set or explicitly set to Nonethis is implicitly true if either TESTING orDEBUG is true.
PRESERVE_CONTEXT_ON_EXCEPTIONBy default if the application is in debug mode the request context is not popped on exceptions to enable debuggers to introspect the data. This can be disabled by this key. You can also use this setting to force-enable it for non debug execution which might be useful to debug production applications (but also very risky).
SECRET_KEYthe secret key
SESSION_COOKIE_NAMEthe name of the session cookie
SESSION_COOKIE_DOMAINthe domain for the session cookie. If this is not set, the cookie will be valid for all subdomains of SERVER_NAME.
SESSION_COOKIE_PATHthe path for the session cookie. If this is not set the cookie will be valid for all of APPLICATION_ROOT or if that is not set for '/'.
SESSION_COOKIE_HTTPONLYcontrols if the cookie should be set with the httponly flag. Defaults to True.
SESSION_COOKIE_SECUREcontrols if the cookie should be set with the secure flag. Defaults to False.
PERMANENT_SESSION_LIFETIMEthe lifetime of a permanent session asdatetime.timedelta object. Starting with Flask 0.8 this can also be an integer representing seconds.
SESSION_REFRESH_EACH_REQUESTthis flag controls how permanent sessions are refreshed. If set to True (which is the default) then the cookie is refreshed each request which automatically bumps the lifetime. If set to False a set-cookie header is only sent if the session is modified. Non permanent sessions are not affected by this.
USE_X_SENDFILEenable/disable x-sendfile
LOGGER_NAMEthe name of the logger
LOGGER_HANDLER_POLICYthe policy of the default logging handler. The default is 'always' which means that the default logging handler is always active. 'debug' will only activate logging in debug mode, 'production' will only log in production and 'never' disables it entirely.
SERVER_NAMEthe name and port number of the server. Required for subdomain support (e.g.:'myapp.dev:5000') Note that localhost does not support subdomains so setting this to “localhost” does not help. Setting a SERVER_NAME also by default enables URL generation without a request context but with an application context.
APPLICATION_ROOTIf the application does not occupy a whole domain or subdomain this can be set to the path where the application is configured to live. This is for session cookie as path value. If domains are used, this should be None.
MAX_CONTENT_LENGTHIf set to a value in bytes, Flask will reject incoming requests with a content length greater than this by returning a 413 status code.
SEND_FILE_MAX_AGE_DEFAULTDefault cache control max age to use withsend_static_file() (the default static file handler) and send_file(), asdatetime.timedelta or as seconds. Override this value on a per-file basis using theget_send_file_max_age() hook on Flask orBlueprint, respectively. Defaults to 43200 (12 hours).
TRAP_HTTP_EXCEPTIONSIf this is set to True Flask will not execute the error handlers of HTTP exceptions but instead treat the exception like any other and bubble it through the exception stack. This is helpful for hairy debugging situations where you have to find out where an HTTP exception is coming from.
TRAP_BAD_REQUEST_ERRORSWerkzeug’s internal data structures that deal with request specific data will raise special key errors that are also bad request exceptions. Likewise many operations can implicitly fail with a BadRequest exception for consistency. Since it’s nice for debugging to know why exactly it failed this flag can be used to debug those situations. If this config is set to Trueyou will get a regular traceback instead.
PREFERRED_URL_SCHEMEThe URL scheme that should be used for URL generation if no URL scheme is available. This defaults to http.
JSON_AS_ASCIIBy default Flask serialize object to ascii-encoded JSON. If this is set to False Flask will not encode to ASCII and output strings as-is and return unicode strings.  jsonify will automatically encode it in utf-8 then for transport for instance.
JSON_SORT_KEYSBy default Flask will serialize JSON objects in a way that the keys are ordered. This is done in order to ensure that independent of the hash seed of the dictionary the return value will be consistent to not trash external HTTP caches. You can override the default behavior by changing this variable. This is not recommended but might give you a performance improvement on the cost of cachability.
JSONIFY_PRETTYPRINT_REGULARIf this is set to True (the default) jsonify responses will be pretty printed if they are not requested by an XMLHttpRequest object (controlled by the X-Requested-With header)
JSONIFY_MIMETYPEMIME type used for jsonify responses.
TEMPLATES_AUTO_RELOADWhether to check for modifications of the template source and reload it automatically. By default the value is None which means that Flask checks original file only in debug mode.
EXPLAIN_TEMPLATE_LOADINGIf this is enabled then every attempt to load a template will write an info message to the logger explaining the attempts to locate the template. This can be useful to figure out why templates cannot be found or wrong templates appear to be loaded.

 

 

 

 

参考:1、https://zhuanlan.zhihu.com/p/24055329?refer=flask

   2、http://flask.pocoo.org/docs/0.11/config/#configuration-handling

   3、http://www.cnblogs.com/m0m0/p/5624315.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值