蓝图是模块级别的拆分,它不是设计来让你拆分试图函数的。要实现比模块级别下更具体的视图函数的拆分,例如在用Flask制作REST API时版本号下根据不同业务对象的函数拆分时,我们就需要自定义一个跟蓝图功能相同的模块。在这里,为了体现它跟蓝图的异曲同工之妙,我们将它命名为红图!
我们这里将示范上述场景中红图对象的制作。假设在v1版本的api中,有资源user, book等,我们希望对于每个资源对应的CURD方法分别放在各自的py文件中,如图所示:
我的文件结构是 app/api/v1/redpoint。
就像我们实例化蓝图对象一样,我们首先实例化我们的红图对象,虽然它暂时还未被定义,但我们会在后面补充它。我们分别在book.py和user.py里创建实例api:
# book.py
api = Redprint('book')
# user.py
api = Redprint('user')
对了,在使用我们的红图对象前别忘了先注册蓝图对象,因为我们同样需要将红图对象注册到蓝图上,就像蓝图注册到核心对象app上一样,在这里我就不演示在创建核心对象app工厂函数中注册蓝图的步骤了,但千万别忘了这一步哦。在蓝图v1/__init__.py中,在实例化蓝图对象后,注册红图:
from app.api.v1 import u