在Flask中创建Web应用的Python包和模块
目前,我正在为一家公司编写一个网页界面。
这个网页界面是基于Python的一个小框架Flask。我想用MVC的原则来构建这个界面。现在我有一些问题。
模型部分会使用SQLAlchemy来处理数据的映射,这里没有问题。
视图部分会用一些HTML和CSS,我觉得这里也不会有问题。
但是控制器部分就有点麻烦了。
我想把页面分成不同的模块,把脚本应用也分成不同的模块,然后把这些模块打包成一个控制器的包,比如说:
- 会话模块(登录/登出/ Cookies)
- 管理员模块(管理注册账户/内容等)
- 应用脚本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
这样做算是好习惯吗?还是说我应该从头开始,把这个包中的每个模块都导入进来?我最初的想法是为了避免因为脚本的大小而导致应用加载过慢,只有在访问需要某个模块的页面时才调用该模块,类似这样的做法。