flask web 开发实战(二)--环境变量和项目配置
2020-08-24 本文已影响0人
code_debug
管理环境变量
环境变量文件包括三个来源:
- 系统环境变量,
- flask相关的环境变量(.flaskenv),
- 包含敏感信息的环境变量(.env)。
-
环境变量.png
其中.env 和系统环境变量都是保存在开发者本地的敏感信息,不能上传到代码仓库,需要添加到ignore里。
-
gitignore.png
环境变量的使用之项目配置:
- 直接加载
app = Flask(__name__)
db = SQLAlchemy(app)
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://xxxx@127.xxxx'
app.config['SECRET_KEY'] = 'secret_key'
-
从文件中加载
文件加载.png
- 对应的config.py 文件
import os
from dotenv import load_dotenv
prodir = os.path.abspath(os.path.dirname(os.path.dirname(__file__))) # 获取上级目录
load_dotenv(os.path.join(prodir,'.env'))
SECRET_KEY = os.getenv('SECRET_KEY','secret_key')
SQLALCHEMY_TRACK_MODIFICATIONS = False
SQLALCHEMY_DATABASE_URI = os.getenv('SQLALCHEMY_DATABASE_URI')
BLUELOG_MANAGE_POST_PER_PAGE=5
BLUELOG_COMMENT_PER_PAGE=5
环境变量的加载原理
from flask import Flask
import os
from dotenv import load_dotenv
# 环境变量的加载顺序,系统变量>.env>.flaskenv
prodir = os.path.abspath(os.path.dirname(os.path.dirname(__file__))) # 获取上级目录
load_dotenv(os.path.join(prodir,'.env'))
load_dotenv(os.path.join(prodir,'.flaskenv'))
app =Flask(__name__)
#直接定义变量值
app.config['APPLE']='APPLE'
#从系统变量取值
app.config['pyenv'] = os.getenv('PYENV')
# .env .flaskenv 加入环境变量后,取值。验证优先级
app.config['WATER'] = os.getenv('WATER')
app.config['AA'] = os.getenv('APPLE')
app.config['BB'] = os.getenv('EGG')
for k,v in app.config.items():
print(k,v)