2

目前,我正在为一家公司编写 Web 界面。

这个 Web 界面基于 python 微框架 Flask。我想使用MVC原理来构建这个接口。我有一些问题。

该模型将在 SQLAlchemy 的帮助下包含用于 ORM 映射的数据,没有问题。
这些视图基于一些html和css,我认为这里也不会有问题。

另一方面,控制器有点麻烦。
我想将页面分成模块并将脚本应用程序分成单独的模块,并将所有这些模块打包到一个控制器包中,例如:

  • 会话模块(登录/注销/Cookie)
  • 管理员模块(管理注册帐户/内容/等)
  • 应用程序脚本 1 模块
  • 应用程序脚本 2 模块
  • 应用程序脚本 3 模块

我知道要渲染模板,您需要使用路由等。但是,如果调用某个链接,它将如何调用特定模块并从那里提取方法。是否可以为路由创建一个主控制器,并为路由中的每个方法导入上述模块之一?

@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

这是一个好习惯吗?或者我应该从标题开始并导入我在这个包中的每个模块。我的第一个想法是防止应用程序由于脚本的大小而加载太长,如果访问需要该模块的页面或类似的东西,只会调用某些模块。

4

1 回答 1

3

如果我的问题是正确的,那么您肯定想使用蓝图 :) 在文档中阅读更多内容

基本上,这就是如何在没有一个控制器的情况下使 Flask 应用程序模块化的方法,其中所有可能的模块都在那里导入或其他一些技巧。

在这里,您可以找到使用蓝图的应用程序示例。

于 2013-02-05T08:13:15.817 回答