清理web2py我的控制器

时间:2011-07-24 22:51:35

标签: web2py

我的控制器在我的web2py应用程序中变得有点杂乱,我想将功能移到另一个地方。

我最初考虑将它们移动到模块,但我有时会访问数据库,并在db.py中设置其他参数(我用于用户ID,现在用于日期等)。

是否有一种干净的方法可以将这些功能移动到新文件,同时仍然可以访问我需要的变量?我不反对from db import me, now

之类的东西

2 个答案:

答案 0 :(得分:6)

您的控制器操作(即URL中显示的操作)必须是控制器文件中定义的功能(即,您无法将它们移动到模块中)。但是,如果控制器中的某些功能不是操作,则可以将它们移动到模块中。假设您将从模型或控制器调用这些函数,您只需将dbmenow对象作为参数传递给这些函数。另一个选择是将它们添加到线程本地current对象,可以从模块访问它。为此:

在模型中:

from globals import current
current.app.db = db
# etc.

在一个模块中:

from globals import current

def func(*args):
    db=current.app.db
    # etc.

答案 1 :(得分:3)

你可以在modules文件夹中创建python文件并导入它们就像你在控制器中导入python库一样。但你必须提供这些文件的路径,如

 from applications.myApp.modules.myModule import *

这是我对包装器的解决方案

相关问题