目录
一、Flask settings配置
Flask 是python轻量级的web框架,所以在开发之初给我们提供了最为简单第一个开发的模式,单文件开发,他将配置定义为一个接口对象,可以接受 py文件,json文件,xml文件作为配置文件。
同时也提供了config方法,config返回一个类字典对象,我们可以像对字典一样对配置进行操作。
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_wtf.csrf import CSRFProtect
app = Flask(__name__)
app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:////Project/FlaskProject/Night/flask.db"
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = True
app.config["SECRET_KEY"] = "12345678"
#app.config.update({"SECRET_KEY":"2"})
CSRFProtect(app)
db = SQLAlchemy(app)
Flask实际上配置的地方有两处,一处就是我们配置数据库,csrf这些东西的,而另一处用来配置template模板加载的路径,static加载的路径,这一处是Flask类的init的参数
def __init__(
self,
import_name, #被导入时的名称
static_url_path=None, #静态文件目录的url /static/,默认不写,但是不可以和 static_folder一样
static_folder='static', #静态文件的目录路径
static_host=None, #今天文件的host远程地址
host_matching=False, #主机范围,这个一定要慎用,如果为true,每个试图的装饰route都需要host=“”参数
subdomain_matching=False, #限制子域名
template_folder='templates', #html模板文件的路径
instance_path=None, #假如当前项目有两个app实例
instance_relative_config=False, #是否加载另外实例的配置文件
root_path=None #主实例所在目录的绝对路径
)
Flask 多样化的配置格式
1、导入python类型的settings配置文件
settings.py文件
init文件
2、接受其他类型的配置文件
app.config.from_json('json文件') #从json文件进行获取
app.config.from_mapping({"SQLALCHEMY_DATABASE_URI":"sqlite:////Project/FlaskProject/Night/flask.db"}) #从字典获取
app.config.from_object("School.settings.Test") #从类对象中获取
3、通常工作当中的flask配置
Settings.py
import os
# basedir = os.path.dirname(__file__)
# print(basedir)
class Config:
DEBUG = False
SQLALCHEMY_DATABASE_URI = "sqlite:////code/flask/CompanyProject/app/flask.db"
SQLALCHEMY_TRACK_MODIFICATIONS = True
SECRET_KEY = os.environ.get("SECRET_KEY") or 'hard to guess string'
@staticmethod
def init_app(app):
pass
class Test(Config):
DEBUG = True
SQLALCHEMY_DATABASE_URI = "sqlite:////code/flask/CompanyProject/app/test.db"
class Run(Config):
pass
config={
"test":Test,
"run":Run
}
Init.py
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_wtf.csrf import CSRFProtect
app = Flask(__name__)
app.config.from_object("project.settings.Test")
CSRFProtect(app)
db = SQLAlchemy(app)
sys.argv 接受调用文件时候外部传递的参数