python - flask 框架 : MVC pattern

标签 python design-patterns model-view-controller flask

Flask 框架天生就支持MVC 模式吗?我应该将应用程序的哪一部分视为模型,将什么视为 View 以及将什么视为 Controller ?

通常(根据我的经验)Flask 应用程序如下所示:

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

最佳答案

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

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

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

如您所见,那里没有 View 或模型。但是,它也是构建在 Jinja2 模板库之上的,因此在实际的应用程序中,您的方法(充当 Controller )如下所示:

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

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

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

你有它:MVC

关于python - flask 框架 : MVC pattern,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12547206/

相关文章:

python - 如何在 Python 中扩展/连接两个迭代器

python - 在 Windows 上安装 scipy 的问题

python - 删除 Python 列表元素

c++ - 派生类的单例模式

java - 什么是静态工厂方法?

model-view-controller - Dialogflow Webhook C# 集成

python - 对DBus感到困惑

objective-c - Cocoa中不同ViewController之间的通信

javascript - 在我看来,使用 iFrame 中使用的 html 文件中的模型数据

java - 在 Java 中初始化 HashMap 的良好设计模式选择