引言 本文介绍Flask中的蓝图相关知识。 学习内容:

  1. 蓝图的优点:将应用进行“模块化”。

官方文档

1.概述

image.png

1.蓝图的优点

优点将应用进行“模板化”。

2.代码实现

1.代码实现

说明 此处:使用Tornado进行运行Flask服务

  1. #!/usr/bin/env pytho
  2. # -*- coding: utf-8 -*-
  3. """
  4. @author:xiecuihao
  5. @file:login.py
  6. @time:2022/04/16
  7. """
  8. # 【step1】导入 蓝图[Blueprint]
  9. from flask import Blueprint as bp
  10. # 【step2】 声明-蓝图-->参数:定义蓝图的名字;导入__name__
  11. loginApp = bp("loginApp", __name__)
  12. # 【step3】定义:蓝图视图函数
  13. @loginApp.get("/")
  14. def login():
  15. return "hello login"
  16. # 【step3】定义:蓝图视图函数
  17. @loginApp.get("/login/login1")
  18. def login1():
  19. return "hello login1-ok"
  20. if __name__ == '__main__':
  21. pass
  1. #!/usr/bin/env pytho
  2. # -*- coding: utf-8 -*-
  3. """
  4. @author:xiecuihao
  5. @file:main.py
  6. @time:2022/04/16
  7. """
  8. from flask import Flask
  9. from flask_cors import CORS
  10. from api.login import loginApp # 【step4】【导入】蓝图-模块文件
  11. app = Flask(__name__)
  12. CORS(app) # 解决跨域
  13. # 处理中文乱码
  14. app.config['JSON_AS_ASCII'] = False
  15. # 【step5】 注册:蓝图对象
  16. app.register_blueprint(loginApp)
  17. # if __name__ == '__main__':
  18. # app.run(port=8806,host="0.0.0.0",debug=True)

2.运行结果

image.png
image.png

3.蓝图嵌套(不常用)

将蓝图对象cookieApp绑定(嵌套)到蓝图对象loginApp中;那么cookieApp的url路由则在loginApp路由后面。
image.png

1.代码实现

1.蓝图对象-cookieApp

  1. #!/usr/bin/env pytho
  2. # -*- coding: utf-8 -*-
  3. """
  4. @author:cooling
  5. @file:cookie.py
  6. @time:2022/04/16
  7. """
  8. from flask import Blueprint as bp
  9. from flask import make_response
  10. cookieKey="mp-cookie"
  11. cookieApp=bp("cookieApp",__name__,url_prefix="/cookie")
  12. @cookieApp.get("/set")
  13. def set_cookie():
  14. resp=make_response("设置cookie")
  15. resp.set_cookie(cookieKey,"myFlaskCookie-2022")
  16. return resp
  17. @cookieApp.get("/delete")
  18. def delete_cookie():
  19. resp=make_response("删除cookie")
  20. resp.delete_cookie(cookieKey)
  21. return resp
  22. if __name__ == '__main__':
  23. pass

2.蓝图对象-loginApp

  1. #!/usr/bin/env pytho
  2. # -*- coding: utf-8 -*-
  3. """
  4. @author:cooling
  5. @file:login.py
  6. @time:2022/04/16
  7. """
  8. # 【step1】导入 蓝图[Blueprint]
  9. from flask import Blueprint as bp
  10. from flask import make_response
  11. # 【step2】 声明-蓝图-->参数:定义蓝图的名字;导入__name__
  12. loginApp = bp("loginApp", __name__, url_prefix="/login")
  13. # 【step3】定义:蓝图视图函数
  14. @loginApp.get("/")
  15. def login():
  16. return "hello login"
  17. # 【step3】定义:蓝图视图函数
  18. @loginApp.get("/login1")
  19. def login1():
  20. return "hello login1-success2022"
  21. if __name__ == '__main__':
  22. pass

3.flask主模块-main

  1. #!/usr/bin/env pytho
  2. # -*- coding: utf-8 -*-
  3. """
  4. @author:cooling
  5. @file:main.py
  6. @time:2022/04/16
  7. """
  8. import resource.flaskConfig as config1
  9. from flask import Flask
  10. from flask_cors import CORS
  11. from api.login import loginApp # 【step4】【导入】蓝图-模块文件
  12. from api.cookie import cookieApp
  13. app = Flask(__name__)
  14. CORS(app) # 解决跨域
  15. # 处理中文乱码
  16. # app.config['JSON_AS_ASCII'] = False
  17. app.config.from_object(config1)
  18. # 【step5】 注册:蓝图对象
  19. loginApp.register_blueprint(cookieApp) # 将cookieApp嵌套绑定到loginApp上
  20. app.register_blueprint(loginApp)
  21. app.debug = True
  22. @app.get("/")
  23. def index():
  24. return "index-flask"
  25. # if __name__ == '__main__':
  26. # app.run(port=8806,host="0.0.0.0",debug=True)

2.运行结果

image.png