Flask蓝图

概述

在之前的讲解中,只用一个.py文件,当web应用功能较多,代码越来越多时,将代码都写在一个.py文件,显然是不合理的。

模块化开发

模块化在工业中很常见,比如台式机,买来匹配的主板、CPU、内存、硬盘、显卡、机箱、显示器等,即可组装成一台电脑

软件模块化也是如此,比如将商城分为以下几个模块:商品模块、用户模块、商家模块、评价模块、管理员模块等,每个模块自成一个体系,由不同的程序员开发

蓝图

在Flask中,蓝图可以实现web应用的 模块化 开发,一个蓝图定义了可用于单个应用的视图,模板,静态文件等等的集合。

感性认识

子模块

创建admin.py文件,代码如下:

  1. #coding=utf-8
  2. from flask import Blueprint,render_template
  3. '''
  4. 定义蓝图
  5. '''
  6. admin=Blueprint('admin',__name__,url_prefix='/admin')
  7. @admin.route('/')
  8. def index():
  9. return render_template('admin/index.html')

注册蓝图

在.py主文件中增加如下代码:

  1. #coding=utf-8
  2. from admin import admin
  3. app.register_blueprint(admin)

测试

在启动服务的代码改成如下:

  1. if __name__ == "__main__":
  2. print(app.url_map )
  3. print('*'*50)
  4. print(app.view_functions)
  5. app.run(debug=True)

运行.py文件,查看打印的url_mapview_functions,如下:

  1. Map([<Rule '/product' (GET, OPTIONS, HEAD) -> product>,
  2. <Rule '/admin/' (GET, OPTIONS, HEAD) -> admin.index>,
  3. <Rule '/login' (POST, OPTIONS) -> login>,
  4. <Rule '/' (GET, OPTIONS, HEAD) -> index>,
  5. <Rule '/static/<filename>' (GET, OPTIONS, HEAD) -> static>])
  6. **************************************************
  7. {'static': <bound method _PackageBoundObject.send_static_file of <Flask 'server'>>, 'admin.index': <function index at 0x03ED3300>, 'index': <function index at 0x033B1CD8>, 'product': <function product at 0x03ED3348>, 'login': <function login at 0x03ED33D8>}

能够查看到蓝图中的 路由视图函数

注意: 蓝图中的路由url是有前缀/admin的,endpoint也是有前缀admin

浏览器访问

打开浏览器访问蓝图中的url,http://127.0.0.1:5000/admin/,注意蓝图admin中的路由是有前缀的


原文出处:http://malaoshi.top/show_1EF3X5fGu20T.html