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

作者: cynthia猫 | 来源:发表于2019-02-01 11:03 被阅读10次

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

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

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

    1. 我们先创建应用实例app:
    • 此时可以用工厂方法create_app()这样app = create_app()创建。
    • 或者还可以用app = Flask(__name__)来创建。
      这两种方法的区别不在此赘述,推荐大家使用create_app()
    1. 之后,直接把视图函数注册到应用实例app上面即可。
      装饰器模式下,可以把类似@app.route('/hi', methods = ['GET'])这样的代码加在具体的视图函数上面,之后就可以使用了。

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

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

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

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

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

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

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

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

    • web(网站相关模板、文件)
    • api
    • cms(内容管理)

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

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

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

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

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

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

    相关文章

      网友评论

        本文标题:Flask实战项目笔记(二)蓝图与视图函数

        本文链接:https://www.haomeiwen.com/subject/tmgrsqtx.html