福州建设招聘信息网站,动漫设计专业哪个学校比较好,做房产中介搜房源的网站,道可道在线设计平台配置文件相关使用介绍 一、相关介绍二、系统环境变量配置三、项目中用到的配置项3.1、直接写在主脚本里3.1、单独写在一个配置文件里 四、使用配置文件 一、相关介绍
一般来说#xff0c;在执行flask run命令运行程序前#xff0c;我们需要提供程序实例所在模块的位置 。
F… 配置文件相关使用介绍 一、相关介绍二、系统环境变量配置三、项目中用到的配置项3.1、直接写在主脚本里3.1、单独写在一个配置文件里 四、使用配置文件 一、相关介绍
一般来说在执行flask run命令运行程序前我们需要提供程序实例所在模块的位置 。
Flask会自动探测程序实例自动探测存在下面这些规则
从当前目录寻找app.py和wsgi.py模块并从中寻找名为app或application的程序实例从环境变量FLASK_APP对应的值寻找名为app或application的程序实例
如果你程序主模块命名为app.pyflask run命令会自动在其中寻找程序实例。如果你的程序主模块名是其他名称
比如hello.py那么需要设置环境变量FLASK_APP将包含程序实例的模块名赋值给这个变量。 所以上一篇项目文件布局使用Flask()方法时传递了project参数;
Flask的自动发现程序实例机制还有第三条规则如果安装了python-dotenv那么在使用flask run或其它命令时
会使用它自动从.flaskenv文件和.env文件中加载环境变量。
当安装了python-dotenv时Flask在加载环境变量的优先级是手动设置的环境变量.env中设置的环境变.flaskenv设置的环境变量。
二、系统环境变量配置
对于不适合写在程序里的配置比如密码等需要把配置写入系统环境变量然后使用os模块的getenv()方法获取第二个参数作为默认值
set MAIL_USERNAMEmegreyli.com # windows
export MAIL_USERNAMEmegreyli.com # *uniximport os
from flask import Flaskapp Flask(__name__)
app.config[MAIL_USERNAME] os.getenv(MAIL_USERNAME, megreyli.com)os.getenv()是Python中的一个函数用于获取系统环境变量的值。它可以获取指定环境变量的值并以字符串形式返回。
三、项目中用到的配置项
3.1、直接写在主脚本里
当你的程序很小的时候可以直接把配置写在主脚本里
from flask import Flaskapp Flask(__name__)
app.config[SECRET_KEY] some secret words
app.config[DEBUG] True
app.config[ITEMS_PER_PAGE] 10或者使用update方法简化代码
from flask import Flaskapp Flask(__name__)
app.config.update(DEBUGTrue,SECRET_KEYsome secret words,ITEMS_PER_PAGE10
)附Flask官网-配置管理文档链接
3.1、单独写在一个配置文件里
程序逐渐变大时配置也逐渐增多写在主脚本里太占地方不够优雅。我们可以创建一个单独的配置文件。和上面同样的配置。因为前面项目布局时分享过project目录存储了整个项目的逻辑代码所以我新增了一个config.py在这个目录下
# import os# 基础配置使用继承的方式
class BaseConfig:TESTING False# MySQL所在主机名默认127.0.0.1HOSTNAME 127.0.0.1# MySQL监听的端口号默认3306PORT 3306# 连接MySQL的用户名自己设置USERNAME root# 连接MySQL的密码自己设置PASSWORD root# MySQL上创建的数据库名称DATABASE database_learn# 通过修改以下代码来操作不同的SQL比写原生SQL简单很多 --》通过ORM可以实现从底层更改使用的SQL# app.config[SQLALCHEMY_DATABASE_URI] fmysqlpymysql://{USERNAME}:{PASSWORD}{HOSTNAME}:{PORT}/{DATABASE}?charsetutf8mb4class DevelopmentConfig(BaseConfig):# 开启debugDEBUG True# mysql配置HOSTNAME 211.103.157.180PORT 3310USERNAME 用户名PASSWORD 密码DATABASE 数据库名SQLALCHEMY_DATABASE_URI mysqlpymysql://{USERNAME}:{PASSWORD}{HOSTNAME}:{PORT}/{DATABASE}?charsetutf8mb4class ProductionConfig(BaseConfig):DEBUG FalseSQLALCHEMY_DATABASE_URI mysqlpymysql://{USERNAME}:{PASSWORD}{HOSTNAME}:{PORT}/{DATABASE}config {development: DevelopmentConfig,production: ProductionConfig,
}
四、使用配置文件
通过from_object()方法导入配置
import os
# import logging
# from logging.handlers import TimedRotatingFileHandler
from flask import Flaskfrom project.config import config # 导入存储配置的字典...
def create_app(config_nameNone):if config_name is None:config_name os.getenv(FLASK_ENV, development) # 从环境变量中获取FLASK_ENV并设置默认值app Flask(project)# setup config,导入配置根据配置环境实例化对象app.config.from_object(config[config_name])...return app