问题描述
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
模板来呈现页面。那是你的看法。
Flask没有规定任何模型。你可以使用任何所需的东西-从复杂的对象模型(通常使用诸如sqlAlchemy的ORM)到最适合你需求的东西。
解决方法
Flask框架自然支持MVC模式吗?我应该将应用程序的哪一部分视为模型,将什么视为视图,将什么视为控制器?
通常(以我的经验),Flask应用程序如下所示:
main_dir--|
|
app1--|
| |
| __init__.py
| api.py
| models.py
|
static--|
| |
| all the static stuff
|
app.py # with blueprints registering