Skip to main content
 首页 » 编程设计

python之Python 中的包和模块,用于使用 Flask 创建 Web 应用程序

2024年08月29日42Renyi-Fan

目前,我正在为一家公司编写 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它使用蓝图。