如何在配置文件中设置FLASK_ENV?

2024-05-23 17:58:28 发布

您现在位置:Python中文网/ 问答频道 /正文

TL;DR

我不想每次登录时都export我的变量。我要它们在我的配置中。

从文件中

Using the environment variables as described above is recommended. While it is possible to set ENV and DEBUG in your config or code, this is strongly discouraged.

我该怎么做呢?怎么可能?

更多-我尝试过的内容

我有一个带FLASK_ENV='development'flask.cfg。我运行flask run,然后打印development。但生产服务器已经启动。terminal它忽略了以下内容:

app.config.from_pyfile("flask.cfg")

print(f"{app.config['ENV']}") => development

这是一个无关紧要的私人项目。这就是为什么我为了方便而忽略了最佳实践。


Tags: theenvconfigappflaskenvironmentisas
3条回答

您的项目结构如下所示:

爸爸网站/
|-应用程序/
…|-__init__.py
…|烧瓶.cfg
|-运行.py

你的应用/__init__.py文件:

from flask import Flask

app = Flask(__name__)
app.config.from_pyfile('flask.cfg', silent=True)

@app.route('/')
def home():
    return 'Hello World'

/app/flask.cfg配置文件:

TESTING=False
DEBUG=True

run.py文件:

from app import app

if __name__ == '__main__':
    app.run(host='127.0.0.1', port=5000)

还可以定义实例文件夹并将配置文件放在其中。因此,您的应用程序结构如下所示:

爸爸网站/
|-应用程序/
…|-__init__.py
..|-实例/
…..烧瓶.cfg
|-运行.py

以及您的__init__.py文件:

from flask import Flask
import os

def get_app_base_path():
    return os.path.dirname(os.path.realpath(__file__))


def get_instance_folder_path():
    return os.path.join(get_app_base_path(), 
                        'instance')

app = Flask(__name__,
            instance_path=get_instance_folder_path(),
            instance_relative_config=True)

app.config.from_pyfile('flask.cfg', silent=True)

@app.route('/')
def home():
    return 'Hello World'

怎么办:安装python dotenv包,在项目根文件夹中创建一个.flaskenv文件,然后添加,例如:

FLASK_APP=app.py (or whatever you named it)
FLASK_ENV=development (or production)

保存。烧瓶运行。

如果将配置移到Python中,事情会变得简单一些。考虑

from flask import Flask
from config import Config

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

其中config.py看起来像

import os

class Config:
    SECRET_KEY = os.environ.get('SECRET_KEY', 'default sekret')

这将为您提供可从环境变量重写的默认值。

相关问题 更多 >