在按《Flask Web开发:基于Python的Web应用开发实战》实践的过程中,我一直有一个疑问,即蓝本的优势在哪里

按照书中的操作,我们从一开始的做的

app = Flask(__name__)

@app.route(path)

def XXX

return OOO

似乎只是变成了

app = Flask(__name__)

main = Blueprint('main',__name__)

app.register_blueprint(main)

@main.route(path)

def XXX

return OOO

按FLask官方的说法,蓝本可以很好地帮助你简化工作,但我只感觉多了几个步骤,没能体会到其好处

于是昨天再去调查,才了解到蓝本的正确使用方法

《Explore Flask》中文翻译 蓝本给了我很大启发,看完之后,我认为《Flask Web开发》可以补充两点内容:

1. 组织(网站)项目的两种架构

书里的auth蓝本,负责登录等相关功能,也有专门的url前缀,所以它即是功能式,也是分区式

对没有web开发经验的读者,不容易自行领悟这两种架构,最好能提到一下

2. 蓝本的重要功能 - 可通过蓝图提供模板过滤器、静态文件、模板和其它功能

书中创建了/auth文件夹,auth蓝本位于此文件夹里

但作者没有为auth蓝本配置template_folder参数,而是解释了该蓝本对应的templdate文件夹所在位置,即/template/auth

这点很让人困惑,不管auth蓝本是功能式还是分区式,其相关资源应该被尽可能集中到一起,这点恰恰是蓝本的设计初衷和优势

我觉得更好的做法是创建/auth/template文件夹,并在通过template_folder参数,定义蓝本的相关资源的所在位置

最后,总结一下

1 . 通常蓝本是指继承Blueprint的那个对象,很多时候也指代Flask中这种设计思路

2 . 蓝图的基本设想是它们记录注册到一个应用时的操作执行情况。 当从一个端点到另一端分发请求和生成 URL 时,Flask 关联视图函数和蓝图。 -摘自官网

3 . 蓝图定义了可用于单个应用的视图,模板,静态文件等等的集合 -摘自《Explore Flask》中文翻译

4 . 我们可以通过蓝本有效地组织项目

java blueprint_blueprint(蓝本/蓝图)学习笔记相关推荐

  1. 零基础学习Java开发,这些学习笔记送给你

    因为Java具备很多特点,并且在企业中被广泛应用为此很多小伙伴选择学习Java基础开发,但是零基础学习Java技术开发需要我们制定Java学习路线图对于我们之后的学习会非常有帮助. 零基础学习Java ...

  2. Java 8 函数式编程学习笔记

    Java 8 函数式编程学习笔记 @(JAVASE)[java8, 函数式编程, lambda] Java 8 函数式编程学习笔记 参考内容 Java 8中重要的函数接口 扩展函数接口 常用的流操作 ...

  3. 【Java】函数式编程学习笔记——Stream流

    学习视频:https://www.bilibili.com/video/BV1Gh41187uR?p=1 (1)[Java]函数式编程学习笔记--Lambda表达式 (2)[Java]函数式编程学习笔 ...

  4. java 编程思想 多线程学习笔记

    java 编程思想 多线程学习笔记 一.如何创建多线程? 1.继承 java.lang.Thread 类 2.实现 java.lang.Runnable 接口 3.Callable接口 总之,在任何线 ...

  5. JAVA基础与高级学习笔记

    JAVA基础与高级学习笔记 /记录java基础与高级,除了较简单的内容,没有必要记录的没有记录外,其余的都记录了/ java初学者看这一篇就够了,全文 6万+ 字. JAVA基础 java会出现内存溢 ...

  6. 第10课:底实战详解使用Java开发Spark程序学习笔记

    第10课:底实战详解使用Java开发Spark程序学习笔记 本期内容: 1. 为什么要使用Java? 2. 使用Java开发Spark实战 3. 使用Java开发Spark的Local和Cluster ...

  7. Java并发编程艺术学习笔记(五)

    Java并发编程艺术学习笔记(五) Java并发容器和框架 Java为开发者也提供了许多开发容器和框架,可以从每节的原理分析来学习其中精妙的并发程序. 一.ConcurrentHashMap的实现原理 ...

  8. 《Java编程思想》学习笔记【一对象导论】

    重头学习Java,大一没怎么学,大二上课也没听.(流下不学无术的眼泪) 所有编程语言都提供抽象机制,我们所能解决的问题的复杂性直接取决于抽象的类型和质量. 汇编语言是对底层机器的轻微抽象," ...

  9. Java之GUI编程学习笔记六 —— AWT相关(画笔paint、鼠标监听事件、模拟画图工具)

    Java之GUI编程学习笔记六 -- AWT相关(画笔paint) 参考教程B站狂神https://www.bilibili.com/video/BV1DJ411B75F 了解paint Frame自 ...

最新文章

  1. BZOJ-1008 越狱
  2. python按键_【python】python控制鼠标和键盘
  3. Kubernetes 也有局限性吗?
  4. 30行python代码设计_30行Python代码实现3D数据可视化
  5. php正则表达式2,php正则表达式基本语法(2)
  6. 【软件分析与挖掘】An Empirical Study of Bugs in Build Process
  7. springboot中通过cors协议解决跨域问题
  8. html5 绘制思维导图,Qunee组件制作思维导图
  9. linux 编译libvlc,linux mint debian 下交叉编译libvlc 记录
  10. 华为计算机系统叫什么,华为MateBook操作系统是什么
  11. MT管理器破解COC辅助
  12. 考察一名UI设计师的能力素质模型(转)
  13. c语言中ANSI标准的关键字,C语言中32个关键字详解
  14. 4 数据可视化大屏 - 布局: BootStrap 之网格Grid
  15. Ubuntu还需要做什么才能替代Windows
  16. vue 使用Computed实现数据的动态计算
  17. 向量化执行引擎是怎么玩的?
  18. 程序员求职面试三部曲之一:选择合适的工作单位(转)
  19. JDK8新特性01-Lambda表达式
  20. Latex中如何加粗字体 如何打出圆圈序号

热门文章

  1. #地形剖面图_七年级上册微课 | 地图:地形剖面图与分层设色地形图
  2. oracle ns,RAC到单实例SWITCHOVER
  3. android高德地图设置经纬度,安卓高德地图开发自定义线路规划(按着自己定义的经纬度规划线路)...
  4. [专栏精选]Unity中的Git最佳实践
  5. Unity3d中使用百度语音识别及语音合成【含源码】
  6. (五)如何训练和测试AI语言翻译系统
  7. .NET Core:通过Web API进行微服务交互
  8. Linux 桌面进化史
  9. Apache 回应:参与开源不受 EAR 约束
  10. 如何处理“转换数据类型错误”错误?