2017-11-22 19 views
0

2 개의 별도 컨트롤러가 있으며 한 컨트롤러에서 다른 컨트롤러로 기능을 가져와야합니다.web2py 다른 컨트롤러로 컨트롤러 가져 오기

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

나뿐만 아니라 문서에보고 한 후 일을 아무것도 얻을 수없는 것 : 예를 들어

, 나는 시도 b.py에, a.py와 b.py이 http://web2py.com/book/default/chapter/04#Cooperation

한 컨트롤러에서 다른 컨트롤러로 기능을 가져 오려면 어떻게합니까?

+0

/컨트롤러 폴더 나 앱의/modules 폴더에 a.py가 있습니까? – Anthony

+0

컨트롤러 폴더에 있습니다. 모듈 폴더는 모델과 동일합니까? 내 이해는 그들이 모델에 있다면 그것은 글로벌 공간과 유사합니다. 파일을 컨트롤러 폴더에 유지하고 다른 컨트롤러에서 액세스 할 수있는 방법이 있습니까? –

+0

아니요/modules 폴더는/models과 다릅니다./modules 폴더는 응용 프로그램 별 Python 모듈을 저장하기위한 곳으로, 필요에 따라 가져옵니다./models 폴더에는 각 HTTP 요청에서 자동으로 web2py 환경에서 실행되는 Python 파일이 들어 있습니다. – Anthony

답변

1

web2py에서 컨트롤러는 Python 모듈처럼 취급되고 다른 컨트롤러에서 가져 오기위한 것이 아닙니다. 기술적으로는 /controllers 디렉토리에 __init__.py 파일이 있는지 확인해야하지만 컨트롤러 파일은 web2py 환경에서 HTTP 요청 당 실행되도록되어 있습니다. 컨트롤러에서 함수를 가져 오는 경우 가져 오기 컨텍스트에서 사용할 수없는 web2py 환경 객체 (예 : request, session, 객체가 모델 파일에 정의되어 있음)를 참조 할 수 있기 때문에 함수 호출이 제대로 작동하지 않을 수 있습니다.

컨트롤러간에 기능을 공유하려면 공유 기능을 Python 모듈로 옮기고 공유 기능을 필요로하는 각 컨트롤러에서 가져 오는 것이 좋습니다.