在按《Flask Web开发:基于Python的Web应用开发实战》实践的过程当中,我一直有一个疑问,即蓝本的优点在哪里
按照书中的操做,咱们从一开始的作的html
app = Flask(__name__) @app.route(path) def XXX return OOO
彷佛只是变成了git
app = Flask(__name__) main = Blueprint('main',__name__) app.register_blueprint(main) @main.route(path) def XXX return OOO
按FLask官方的说法,蓝本能够很好地帮助你简化工做,但我只感受多了几个步骤,没能体会到其好处
因而昨天再去调查,才了解到蓝本的正确使用方法
《Explore Flask》中文翻译 蓝本给了我很大启发,看完以后,我认为《Flask Web开发》能够补充两点内容:github
1. 组织(网站)项目的两种架构web
书里的auth蓝本,负责登陆等相关功能,也有专门的url前缀,因此它便是功能式,也是分区式
对没有web开发经验的读者,不容易自行领悟这两种架构,最好能提到一下flask
2. 蓝本的重要功能 - 可经过蓝图提供模板过滤器、静态文件、模板和其它功能架构
书中建立了/auth文件夹,auth蓝本位于此文件夹里
但做者没有为auth蓝本配置template_folder参数,而是解释了该蓝本对应的templdate文件夹所在位置,即/template/auth
这点很让人困惑,无论auth蓝本是功能式仍是分区式,其相关资源应该被尽量集中到一块儿,这点偏偏是蓝本的设计初衷和优点
我以为更好的作法是建立/auth/template文件夹,并在经过template_folder参数,定义蓝本的相关资源的所在位置app
最后,总结一下
1 . 一般蓝本是指继承Blueprint的那个对象,不少时候也指代Flask中这种设计思路
2 . 蓝图的基本设想是它们记录注册到一个应用时的操做执行状况。 当从一个端点到另外一端分发请求和生成 URL 时,Flask 关联视图函数和蓝图。 -摘自官网
3 . 蓝图定义了可用于单个应用的视图,模板,静态文件等等的集合 -摘自《Explore Flask》中文翻译
4 . 咱们能够经过蓝本有效地组织项目函数