flask 配置文件
Posted darkchii
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了flask 配置文件相关的知识,希望对你有一定的参考价值。
flask 文档对于配置文件有一定介绍,可能是英语不好的原因,自己总是有点模糊不清,配置文件到底该放在哪?如何编写?google了一些样例,并做了一些测试后,总算能用了。
下面三种配置方法可以用于不同项目规模:
基础项目结构:
hello ├── .gitignore ├── app.py ├── README.md └── setup.py
一、最基础的配置方法
app.py
from flask import Flask app = Flask(__name__) app.config[‘SECRET_KEY‘] = ‘a random string‘ @app.route(‘/‘) def hello(): return "Hello World!" if __name__ == ‘__main__‘: app.run()
shell:
set FLASK_APP=app.py set FLASK_ENV=development # 开发者模式,生产环境不要使用这种模式 set DEBUG = True flask run
(注:linux 上应使用 export 导入环境变量。详见:run-the-application)
然后可以在看到类似下面的输出:
Serving Flask app "app.py" (lazy loading) Environment: development Debug mode: on Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
但这种配置方式不利于版本控制,当项目提交到 git 或者其他项目管理应用上时,会暴露密钥等。
二、从实例文件进行配置
项目根目录添加实例文件夹:instance
项目结构:
hello ├── .gitignore ├── app.py ├── instance ├── README.md └── setup.py
再在实例文件中添加 `settings.cfg` (或者其他你喜欢的名字)文件,并编写如下:
ENV = ‘development‘ DEBUG = True SECRET_KEY = ‘a random string‘
然后,在 app.py 文件中:
from flask import Flask app = Flask(__name__, instance_relative_config=True) app.config.from_pyfile(‘settings.cfg‘) @app.route(‘/‘) def hello(): return "Hello World!" if __name__ == ‘__main__‘: app.run()
设置 instance_relative_config 为 True,flask 就会默认在项目根目录寻找 instance 文件夹下的 `settings.cfg` 文件。
也可以通过设置 `instance_path` 参数为绝对路径来任意放置自己的实例文件夹。
然后,启动:
python app.py
三、使用 django 风格的配置方法
在项目根目录创建 `config.py` 文件,并编写如下:
import os basedir = os.path.abspath(os.path.dirname(__file__)) class Config(object): DEBUG = False TESTING = False CSRF_ENABLED = True SECRET_KEY = ‘a random string‘ class ProductionConfig(Config): DEBUG = False class StagingConfig(Config): ENV = ‘development‘ DEBUG = True class DevelopmentConfig(Config): ENV = ‘development‘ DEBUG = True class TestingConfig(Config): TESTING = True
项目目录:
hello ├── .gitignore ├── app.py ├── config.py ├── README.md └── setup.py
再在 `app.py` 文件中添加:
from flask import Flask app = Flask(__name__, instance_relative_config=True) app.config.from_object(‘config.DevelopmentConfig‘) @app.route(‘/‘) def hello(): return "Hello World!" if __name__ == ‘__main__‘: app.run()
启动:
python app.py
以上就是我自己的 flask 项目的配置方法,正如文档所说:“没有一个绝对完美的配置方法”,还有一些其他方法,大家可以自己再探索更合适自己项目的方法:)
最后
参考:
1.http://flask.pocoo.org/docs/1.0/config/
2.https://realpython.com/flask-by-example-part-1-project-setup/
3.https://qiita.com/nanakenashi/items/e272ff1aafb3889230bc
以上是关于flask 配置文件的主要内容,如果未能解决你的问题,请参考以下文章