Flask
- 所有的Flask程序都必须创建一个程序实例
- Flask类的构造函数只有一个必须指定的参数,即程序主模块或包的名字
- Flask 用这个参数决定程序的根目录,以便稍后能够找到相对于程序根目录的资源文件位置。
编写一个hello world
- 首先需要导入Flask类,并创建类的对象
from flask import Flask
app = Flask(__name__)
- 装饰器的作用是将路由映射到视图函数
- 程序实例需要知道对每个URL请求运行哪些代码,所以要保存一个URL到Python函数的映射关系。
- 在Flask程序中定义路由可以使用实例对象提供的app.route装饰器,把装饰器的函数注册为路由
@app.route('/')
def home():
return 'Hello World'
- 执行Flask实例对象的run方法,启动web服务器
- name== 'main’在这里确保了直接执行这个脚本时才启动开发web服务器,如果这个脚本由其他脚本引入,程序嘉定父级脚本会启动不同的服务器,因此就不会执行app.run()
if __name__== '__main__':
app.run()
Flask程序实例在创建的时候,需要默认传入当前Flask程序所指定的包(模块)
import_name
- Flask程序所在的包或模块,传__name__就可以
- 它可以决定Flask在访问静态文件时查找的路径
static_url_path
- 静态文件访问路径,可以不传,默认为/ + static_folder
static——folder
- 静态文件存储的文件夹,可以不传,默认为static
template_folder
- 模板文件存储的文件夹,可以不传,默认为templates
Flask将配置信息保存到了app.config属性中,该属性可以按照字典类型进行操作。
主要的使用有三种方式:
- 从配置对象中加载(可以继承)
app.config.from_object(你定义的配置对象)
from flask import Flask
class Default(object):
MY_SQL = 'mysql address '
class DeafultConfig(Default):
REDIS = 'redis address'
app = Flask(__name__)
# 从配置对象中加载
app.config.from_object(DeafultConfig)
@app.route('/')
def index():
print(app.config['MY_SQL'])
print(app.config['REDIS'])
return '<h1>Hello World!</h1>'
if __name__ == '__main__':
app.run()
- 从配置文件中加载
app.config.from_pyfile(配置文件的名字加后缀,不需要导包)
from flask import Flask
app = Flask(__name__)
# 导入配置文件
app.config.from_pyfile('settings.py')
@app.route('/')
def index():
print(app.config.get('SECRET_KEY'))
return '<h1>Hello World!</h1>'
if __name__ == '__main__':
app.run()
- 从环境变量中加载
- Flask使用环境变量加载配置的本质是通过环境变量值找到配置文件,再读取配置文件的信息,其使用方式为
app.config.from_envvar('环境变量名')
关于silent的说明:
-
表示系统环境变量中没有设置相应值时是否抛出异常
-
False 表示不安静的处理,没有值时报错通知,默认为False
-
True 表示安静的处理,即时没有值也让Flask正常的运行下去