zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    ubuntu 卸载干净软件(包括配置文件)
    Unable to lock the administration directory (/var/lib/dpkg/) is another process using it?
    linux watch 命令
    [转]如何成为优秀的程序员?
    【转】css浮动元素的知识
    Hierarchical data in postgres
    【转】supervisord使用
    手动安装pip
    zoj1649-Rescue (迷宫最短路径)【bfs 优先队列】
    poj3278-Catch That Cow 【bfs】
  • 原文地址:https://www.cnblogs.com/darkchii/p/10308341.html
Copyright © 2011-2022 走看看