数据蛙数据分析每周作业百人计划软件测试精进之路

Flask实战项目笔记(二)蓝图与视图函数

2019-02-01  本文已影响10人  cynthia猫

本次笔记主要聊一聊蓝图和视图函数。从刚开始学习Flask就接触到这两个概念,对它们的理解也越来越深。

首先问个问题,我们不用蓝图,可不可以做Flask项目?答案当然是可以。

不使用蓝图,直接创建应用实例

  1. 我们先创建应用实例app:
  1. 之后,直接把视图函数注册到应用实例app上面即可。
    装饰器模式下,可以把类似@app.route('/hi', methods = ['GET'])这样的代码加在具体的视图函数上面,之后就可以使用了。

那么我们为什么还需要用到蓝图呢?

蓝图可以解决视图函数拆分文件的问题

可以想象,在应用比较大的时候,视图函数的数量也会变得庞大起来,此时如何管理它们,将成为一个问题。如果都放在一个文件里面显然是不合适的,如果放在多个文件里面,那么要怎么拆分它们呢?

蓝图就解决了视图函数分文件的问题。我们可以新建很多个蓝图,然后把不同业务的视图函数,注册到不同的蓝图上。

不过不要忘记了,蓝图不能独立存在,必须插到应用实例app这个插板上面才可以使用。

蓝图:大型工程中分拆模块

除了视图函数,蓝图还可以包括很多静态文件、模板等。所以,虽然我们是从如何拆分视图函数来引入蓝图的使用,但实际上蓝图是为了在大型工程里面分拆不同的模块,而不是用来拆文件的。因此你也就明白它里面为什么除了视图函数,还会包含其他的文件了。

我们来看一个例子,比如做一个内容管理系统,我们分了三块内容:

那么以上每一块内容都可以对应一个蓝图,这样就很清晰的划分了工程的模块。

蓝图、核心对象app的初始化

那么,如果你的应用还没有使用蓝图,你可以尝试引入蓝图,然后把之前注册到app上的视图函数直接注册到蓝图上,再把蓝图插入到app上面。

提到app,通常情况只有一个核心对象app,实际上可以有多个核心对象(使用的较少),这里知道这个概念即可。

核心对象app的初始化, 一般放到__init__.py里面,也就是app包的初始化文件里。 def create_app():

蓝图的相关初始化,则是放到蓝图的初始化文件里面。

上一篇 下一篇

猜你喜欢

热点阅读