Article / 文章中心

Python全栈:flask的blueprint蓝图使用

发布时间:2021-11-23 点击数:110

Flask的 app 和 Blueprint蓝图 就好比 Django 的project 和 app, 可以使应用模块化

flask最小框架

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 "<h1>hello world app_api<h1>" 

注册蓝图

在最小框架中修改

# run.py  from flask import Flask  # 引入蓝图文件 from demo.api.main import app_api  app = Flask(__name__)  @app.route('/') def hello_world():  return '<h1>Hello World! index<h1>'  # 注册蓝图 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 "<h1>404<h1>"