Flask的 app 和 Blueprint蓝图 就好比 Django 的project 和 app, 可以使应用模块化
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello World!'
if __name__ == '__main__':
app.run()
定义蓝图
# api/main.py
from flask import Blueprint
app_api = Blueprint(name="app_api", import_name=__name__)
@app_api.route("/")
def show():
return "hello world app_api"
注册蓝图
在最小框架中修改
# run.py
from flask import Flask
# 引入蓝图文件
from demo.api.main import app_api
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello World! index'
# 注册蓝图
app.register_blueprint(blueprint=app_api, url_prefix='/api')
if __name__ == '__main__':
app.run(host="127.0.0.1", port=5002)
访问测试: http://127.0.0.1:5002/ -》 Hello World! index http://127.0.0.1:5002/api/ -》 hello world app_api
so eazy!!!
静态文件和模板文件在定义蓝图中修改
app_api = Blueprint(name="app_api", import_name=__name__,
static_folder='static', # 静态文件
template_folder='templates' # 模板文件夹
)
重定向
run.py 文件中修改
@app.route('/hello')
def hello():
return redirect(url_for("app_api.hello_world"))
404
run.py 文件中修改
@app.errorhandler(404)
def page_not_found(e):
return "404"
参考文章: 使用蓝图的模块化应用