Flask创建app对象
app = Flask(__name__
)
(1)初始化参数
-
__name__
:导入路径(寻找静态目录与模板目录位置的参数) -
static_url_path
:访问静态资源的url前缀,默认值是static,用于区分用户访问内容是静态资源还是动态路由 -
static_folder
:静态文件目录默认static -
template_folder
:默认templates
示例
# coding:utf-8
from flask import Flask
# 创建flask应用
app = Flask(__name__,
static_url_path='/python')
# 访问路由地址
@app.route('/')
def index():
return 'hello world'
if __name__ == '__main__':
# 启动flask程序
app.run()
访问
http://127.0.0.1:5000/python/index.html
(2)配置参数的导入(以下三种方式都可以)
app.config相当于一个字典
1.使用配置文件
# 从py文件中获取配置参数(需要手动在项目中创建一个配置文件例:config.cfg)
app.config.from_pyfile('config.cfg') # 相对于当前文件路径
2.使用对象配置参数
class Config(object):
DEBUG = True
# 从对象中获取配置参数
app.config.from_object(Config)
3.直接操作config
,配置参数较少时使用
app.config['DEBUG'] = True
(3)配置参数在视图函数中的使用
# coding:utf-8
from flask import Flask
# 创建flask应用
app = Flask(__name__,
static_url_path='/python')
class Config(object):
DEBUG = True
NAME = 'Flask'
# 从对象中获取配置参数
app.config.from_object(Config)
# 访问路由地址
@app.route('/')
def index():
# 使用配置参数
name = app.config.get('NAME') # app.config['NAME']
return name
if __name__ == '__main__':
# 启动flask程序
app.run()
(4)current_app
的使用及说明
说明:current_app
类似于一个全局化的app
对象,current_app被称为应用上下文
,可以在flask应用全局任意地方使用,防止我们脱离app应用所在文件时无法使用到app对象。
示例: 我们flask应用文件为hello.py
,我们在另一个文件views.py
中定义了视图函数,此时我们在该文件下则无法拿到app对象,但我们必须通过他来读取配置文件,我们就可以导入current_app
全局对象,从而读取配置文件。
# coding:utf-8
from flask import Flask
from view import index
# 创建flask应用
app = Flask(__name__,
static_url_path='/python')
class Config(object):
DEBUG = True
NAME = 'Flask'
# 从对象中导入配置参数
app.config.from_object(Config)
# 访问路由地址
app.route('/')(index)
if __name__ == '__main__':
# 启动flask程序
app.run()
from flask import current_app
def index():
# 使用配置参数
name = current_app.config.get('NAME') # app.config['NAME']
return name
(5)启动程序
if __name__ == '__main__':
# 启动flask程序
app.run()
默认绑定到127.0.0.1,我们只能通过127.0.0.1:5000
这个地址访问,除此之外的地址你都访问不了。
if __name__ == '__main__':
# 启动flask程序
app.run(host='0.0.0.0', port=5000)
此时你既可以通过项目所在机器真实IP:5000
访问,也可以通过127.0.0.1:5000
访问,debug
参数也可以通过app.run()
来配置。
if __name__ == '__main__':
# 启动flask程序
app.run(host='0.0.0.0', port=5000, debug=True)