Flask笔记 01

Posted 码上有云

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flask笔记 01相关的知识,希望对你有一定的参考价值。

一、Flask 框架初始化参数


from flask import Flask
app = Flask(__name__, static_folder='sta', static_url_path='/s', template_folder='tem')

# __name__:带边当前文件的目录为Flask 项目的目录。
# static_folfer:初始化静态文件的文件名,默认为:static。
# static_url_path:初始化静态文件的路由地址,默认为:/static。
# template_folder:初始化模板文件的文件名,默认为:template。
@app.route('/')def hello_world(): return 'Hello World!'

if __name__ == '__main__':    app.run()


二、Flask 应用程序初始化参数


1、配置对象方式加载配置信息

class DefConfig(object): """ 默认配置    """    SECRET_KEY = 'xxxxxxx'
app.config.from_object(DefConfig)# app.config.from_envvar()# app.config.from_json()# app.config.from_mapping()# app.config.from_pyfile()

@app.route('/')def hello_world():    print(app.config['SECRET_KEY']) return 'Hello World!'

2、配置文件方式加载配置信息

# app.config.from_object(DefConfig)app.config.from_pyfile('setting.py')# app.config.from_envvar()# app.config.from_json()# app.config.from_mapping()


@app.route('/')def hello_world(): print(app.config['SECRET_KEY']) return 'Hello World!'

3、配置环境变量方式加载配置信息

# app.config.from_object(DefConfig)# app.config.from_pyfile('setting.py')app.config.from_envvar('FLASK_ENV', silent=True)  # silent 表示系统环境变量中没有设置的相应的值时是否抛出异常。# Flase: 表示不安静的处理,没有值时会报错,默认为Flase# True: 表示安静的处理,即使没有值也让flask正常的运行下去。
# app.config.from_json()# app.config.from_mapping()

操作前提:需要在系统中设置环境变量

Linux 中设置环境变量

# export 环境变量名=环境变量值export FLASK_ENV= setting.py


三种配置方式的优缺点

使用第一种方式(对象方式):

优点:可以复用,使用类的继承。

缺点:敏感数据暴露在代码文件中。


使用第二种方式(配置文件方式):

优点:独立文件,保护敏感资源。

缺点:不能继承,文件路径固定,不灵活。


使用第三种方式(系统变量方式):

优点:独立文件,保护敏感资源。文件路径不固定,灵活。

缺点:需要设置环境变量。


如何使用?

一般使用对象方式,对默认配置进行配置,再使用系统变量方式对敏感配置进行覆盖加载。

from flask import Flask

class DefConfig(object): """ 默认配置 """ SECRET_KEY = 'xxxxxxx'

class DevelopmentConfig(DefConfig): DEBUG = True

def creat_app(config): app = Flask(__name__, static_folder='sta', static_url_path='/s', template_folder='tem')
# __name__:带边当前文件的目录为Flask 项目的目录。
# static_folfer:初始化静态文件的文件名,默认为:static。
# static_url_path:初始化静态文件的路由地址,默认为:/static。
# template_folder:初始化模板文件的文件名,默认为:template。
app.config.from_object(DefConfig) app.config.from_envvar('FLASK_ENV', silent=True)
return app

app = creat_app(DefConfig)

@app.route('/')def hello_world(): print(app.config['HOST']) return 'Hello World!'

if __name__ == '__main__':    app.run(host='0.0.0.0', debug=True)

注:在pycharm中运行flask 项目,debug需要在配置中开启


以上是关于Flask笔记 01的主要内容,如果未能解决你的问题,请参考以下文章

Flask拾遗笔记之上下文

python学习笔记-flask学习

python Flask - 数据库片段

flask源代码笔记——应用启动

flask源代码笔记——路由

Flask 源代码阅读笔记