什么是Flask蓝图?

时间:2014-06-26 00:50:33

标签: python flask wsgi

在蓝图上阅读the official Flask documentation,甚至在onetwo博客文章中使用它们。

我甚至在我的网络应用中使用过它们,但我不完全明白它们是什么或它们如何适合我的应用程序整体。它是如何与我的应用程序的实例相似但不完全?文档是全面的,但我寻求外行解释或启发类比来为我激发它。当一位同事让我向他们解释我选择在这里询问的Flask蓝图时,我感到非常困惑。

5 个答案:

答案 0 :(得分:216)

蓝图是用于生成"部分的模板"一个Web应用程序。你可以把它想象成一个模子:

A medallion mold with a gold medallion freshly removed from it

您可以获取蓝图并将其应用于多个地方的应用程序。每次应用时,蓝图都会在您的应用程序的石膏中创建其结构的新版本。

# An example
from flask import Blueprint

tree_mold = Blueprint("mold", __name__)

@tree_mold.route("/leaves")
def leaves():
    return "This tree has leaves"

@tree_mold.route("/roots")
def roots():
    return "And roots as well"

@tree_mold.route("/rings")
@tree_mold.route("/rings/<int:year>")
def rings(year=None):
    return "Looking at the rings for {year}".format(year=year)

这是一个用于处理树木的简单模具 - 它表示任何处理树木的应用程序都应提供对树叶,树根和环的访问(按年)。就其本身而言,它是一个空心壳 - 它无法路由,它无法响应,直到它被一个应用程序留下深刻印象:

from tree_workshop import tree_mold

app.register_blueprint(tree_mold, url_prefix="/oak")
app.register_blueprint(tree_mold, url_prefix="/fir")
app.register_blueprint(tree_mold, url_prefix="/ash")

一旦创建它可能会给人留下深刻的印象&#34;在应用程序上使用register_blueprint函数 - 这&#34;令人印象深刻&#34;应用程序在url_prefix指定的位置上的蓝图模型。

答案 1 :(得分:4)

我自己也偶然发现了这个问题,并且在阅读了一些文档资料后感到困惑。起初,我认为它就像C#/ Java实现风格,在其中定义了一些内容,但不必担心它的实现会在以后详细说明。但是,我偶然发现了该页面,将其置于非常普通的外行(以及相当热闹的当今事件)术语中。 https://hackersandslackers.com/flask-blueprints/

链接中提到的一个好处是,可以使我有效地逻辑上组织/划分该应用程序为几个部分,这些部分仅需要关注它是自己的事。因此,它提供了一些设计好的封装。

编辑:我当前正在使用它来细分我的webapps代码。这也是一个很好的决定,因为我发现首席设计师希望在Vue.js中成为前端。我还没有使用过,但是查看它的项目文件看起来会更加混乱,并且可能会出现很多命名冲突的情况。

答案 2 :(得分:1)

正如comment by @Devasish中指出的那样,本文提供了一个很好的答案:

http://exploreflask.com/en/latest/blueprints.html

引用该文章:

  

例如Facebook。如果Facebook使用Flask,则可能   具有静态页面的蓝图(即,已登出的首页,注册,   关于等),信息中心(即新闻提要),个人资料   (/ robert / about和/ robert / photos),设置(/ settings / security和   / settings / privacy)等等。这些组件共有一个共同点   布局和样式,但每种样式也都有自己的布局

这是一个很好的解释,尤其是“如果Facebook使用Flask”部分。它为我们提供了一个具体情况,以可视化蓝图的实际工作方式。

答案 3 :(得分:1)

对于较大的项目,您的所有代码都不应位于同一文件中。 相反,您可以根据功能将较大的代码分段或拆分为单独的文件。就像砖砌墙一样。

希望这会有所帮助。由于这是一个理论性的问题,因此请勿发布任何代码。

答案 4 :(得分:0)

Flask蓝图可帮助您创建应用程序的可重用实例。通过在模块中组织项目来实现。然后将这些模块注册到主应用程序中。它们有助于创建应用程序工厂。