• 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` 参数为绝对路径来任意放置自己的实例文件夹。

      详见:instance-folders

      然后,启动:

    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()
    

      简述见:development-production

      启动:

    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

  • 相关阅读:
    js格式化货币金额
    Mac idea maven 创建web项目
    The string "--" is not permitted within comments.
    Java从数据库读取页面树形菜单
    oracle 查询重复数据并且删除, 只保留一条数据重复数据
    SSM框架---使用MyBatis Generator自动创建代码
    前端 NPM常用命令行
    前端常用命令行
    Angular 常用命令行
    JS/JQuery 文档加载完成
  • 原文地址:https://www.cnblogs.com/darkchii/p/10308341.html
Copyright © 2020-2023  润新知