目前,我正在为一家公司编写 Web 界面。
本网页界面基于python微框架Flask。我想用MVC原理来构建这个界面。我心里有一些问题。
在 SQLAlchemy 的帮助下,模型将包含用于 ORM 映射的数据,这没问题。
View 基于一些 html 和 css,我认为这里也不会有问题。
另一方面, Controller 有点笨重。
我想将页面分成模块,将脚本应用程序分成单独的模块,并将所有这些模块打包到一个 Controller 包中,例如:
- session 模块(登录/注销/Cookie)
- 管理员模块(管理注册帐户/内容/等)
- 应用程序脚本 1 模块
- 应用程序脚本 2 模块
- 应用程序脚本 3 模块
我知道要呈现模板,您需要使用路由等。但是我该如何做到,如果调用某个链接,它将调用特定模块并从那里提取方法。是否可以为路由创建一个主 Controller 并为路由中的每个方法导入上面的模块之一?
@app.route('/')
def index():
return render_template("index.html")
@app.route('/login/', methods = ('GET', 'POST'))
def login():
from session import login
-> call method from 'login' here
@app.route('/account/<username>', methods = ('GET', 'POST'))
def login():
from administrator import view_account
-> call method from 'view_account' here
这是一个好的做法吗? 或者我应该从标题开始并导入我在这个包中的每个模块。 我的第一个想法是防止应用程序由于脚本的大小而加载很长时间,只有在访问需要该模块的页面或类似情况时才会调用特定模块。
请您参考如下方法:
如果我答对了你的问题,那么你肯定想使用蓝图 :) 在 documentation 中阅读更多内容
基本上,这就是如何在没有一个 Controller 的情况下使 Flask 应用程序模块化的方法,所有可能的模块都导入那里或其他一些技巧。
在这里你可以找到一个 example of application它使用蓝图。
