Flask框架自然支持MVC模式吗?我应该将应用程序的哪一部分视为模型,将什么视为视图,将什么视为控制器?
通常(以我的经验),Flask应用程序如下所示:
main_dir--| | app1--| | | | __init__.py | api.py | models.py | static--| | | | all the static stuff | app.py # with blueprints registering
Flask实际上不是MVC框架。它是一个简约的框架,可让你在构建应用程序的方式上有很多自由,但是MVC模式非常适合Flask提供的功能。
本质上,你可以编写方法并将其映射到特定的路线,例如:
@app.route("/") def hello(): return "Hello World!"
如你所见,那里没有视图或模型。但是,它也是基于Jinja2模板库构建的,因此在实际的应用程序中,你的方法(充当控制器)如下所示:
@app.route("/") def hello(): return render_template('index.html', username="John Doe")
在这里,你使用index.html模板来呈现页面。那是你的看法。
index.html
Flask没有规定任何模型。你可以使用任何所需的东西-从复杂的对象模型(通常使用诸如SQLAlchemy的ORM)到最适合你需求的东西。