【问题标题】:web2py import controller into another controllerweb2py 将控制器导入另一个控制器
【发布时间】:2017-11-22 15:01:35
【问题描述】:

我有 2 个独立的控制器,我需要将一个功能从一个控制器导入到另一个控制器。

比如我有a.py和b.py,在b.py中我试过:

import a
from applications.a.modules import a
import applications.a.modules.othermodule

在查看文档后,我似乎也无法工作:http://web2py.com/book/default/chapter/04#Cooperation

如何将一个功能从一个控制器导入到另一个控制器?

【问题讨论】:

  • a.py是在app的/controllers文件夹还是/modules文件夹下?
  • 它们在控制器文件夹中。模块文件夹与模型相同吗?我的理解是,如果它们在模型中,那么它类似于全局空间。有没有办法将文件保存在控制器文件夹中并从另一个控制器访问它?
  • 不,/modules 文件夹与 /models 不同。 /modules 文件夹旨在作为存储特定于应用程序的 Python 模块的地方——您可以根据需要导入它们。 /models 文件夹包含在 web2py 环境中在每个 HTTP 请求上自动执行的 Python 文件。

标签: web2py web2py-modules


【解决方案1】:

在 web2py 中,控制器并不意味着被视为 Python 模块并被导入到其他控制器中。从技术上讲,您可以做到这一点(确保/controllers 目录中有一个__init__.py 文件),但控制器文件意味着在web2py 环境中按HTTP 请求执行。如果从控制器导入函数,调用该函数可能无法正常工作,因为它可能会引用 web2py 环境对象(例如,requestsession、模型文件中定义的对象),这些对象在导入。

如果您想在控制器之间共享功能,最好将共享功能移至 Python 模块并将其导入每个需要它的控制器中。

【讨论】:

    猜你喜欢
    • 2016-09-06
    • 1970-01-01
    • 1970-01-01
    • 2014-10-14
    • 1970-01-01
    • 2019-12-09
    • 1970-01-01
    • 2020-07-14
    • 1970-01-01
    相关资源
    最近更新 更多