Flask 框架:MVC 模式

新手上路,请多包涵

Flask 框架自然支持 MVC 模式吗?我应该将应用程序的哪一部分视为模型,将什么视为视图以及将什么视为控制器?

通常(根据我的经验)Flask 应用程序看起来像这样:

 main_dir--|
          |
         app1--|
          |    |
          |  __init__.py
          |  api.py
          |  models.py
          |
         static--|
          |      |
          |    all the static stuff
          |
         app.py # with blueprints registering

原文由 I159 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.7k
2 个回答

Flask 实际上不是 MVC 框架。它是一个极简主义的框架,可以让您在如何构建应用程序方面有很大的自由度,但是 MVC 模式非常适合 Flask 提供的功能,至少在当今 Web 应用程序上下文中对 MVC 模式的理解方式是这样的(纯粹主义者可能会反对)。

本质上,您编写自己的方法并将它们映射到特定路线,例如:

 @app.route("/")
def hello():
    return "Hello World!"

如您所见,那里没有视图或模型。但是,它也是建立在 Jinja2 模板库之上的,因此在实际应用中,您的方法(充当控制器)如下所示:

 @app.route("/")
def hello():
    return render_template('index.html', username="John Doe")

在这里,您使用 index.html 模板来呈现页面。那是你现在的看法。

Flask 没有规定任何模型。您可以使用任何您想要的东西——从复杂的对象模型(通常使用像 SQLAlchemy 这样的 ORM)到适合您需要的最简单的东西。

你有它:MVC

原文由 Zdeslav Vojkovic 发布,翻译遵循 CC BY-SA 4.0 许可协议

从 MVC 的角度来看 Flask,我认为 Flask 给了我们实现自己的模型或视图的灵活性。但是对于Controller我们需要依赖Flask框架本身。

 1.    @app.route("/")
2.    def hello():
2.1       # Code for your model here
2.2       # model code
3.        return render_template('index.html', username="John Doe")

在上面的代码中 -

  1. 第 1 行 - (由)控制器调用:是 Flask 控制器调用的内容,
  2. 第 2 行 - 模型:这是我们编写自己的实现来定义模型的地方,
  3. 第 3 行 - 视图:我们可以将视图编码为使用 {{ }} 和 {% %} 编码的 index.html,模型数据以字典或用户对象的形式传递给视图。例如用户名=“Xxx”

原文由 d5t 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题