2011-09-12 5 views
0

Plone 인스턴스 설정이 있습니다. 내 login_next 스크립트에서 사용자 지정 Python 스크립트 함수를 호출하려고합니다.Plone은 login_next 스크립트에서 파이썬 함수를 호출합니다.

어떻게하면됩니까?

는 예를 들어 말할 :

Custom_print.py

def disp(): 
    return 'Hello world' 

가 어떻게 내 login_next 스크립트 내부에이 DISP()를 호출 할 것인가?

답변

1

그래서이 Custom_print.py는 portal_skins에서 사용할 수있는 스킨 디렉토리에 있으며 기본 스킨에서 사용됩니까? 즉, http://your-plone-site/Custom_print을 방문하면 'Hello world'라는 문자열이 반환됩니다.

그런 다음 login_next 스크립트 (portal_skins의 사용자 정의 맵 또는 파일 시스템의 자체 스킨에서)를 사용자 정의하고 context.Custom_print()을 호출 할 수 있습니다. 당신이 그 스크립트를 넣어 않은 위치에 따라 달라집니다

1

: 당신은 당신이 인수를 사용해야합니다 피부 디렉토리에 해당 스크립트가있는 경우

  • 을 (maurits로 말한다) : context.Custom_print(). Acquisition's pitfalls에 유의하십시오. 이전 Zope2/CMF에서 import mymodule; mymodule.Custom_print()
+0

아니요, 가져 오기로 '사용'할 수 없습니다. login_next 스크립트는 특정 제한 사항 하에서 실행되며 파일 시스템 모듈이 모듈 허용 목록에있는 경우에만 가져올 수 있습니다. –

+0

eheh, 맞아 ...이 코드를 사용하여 허용 된 모듈에서 활성화해야합니다. http://wiki.zope.org/zope2/HowToAddModulesToRestrictedCode –

1

세계를 portal_skins 하는 portal_skins/*/foo.py 객체가 메소드 자체처럼 을 처리 :이 파일 시스템 모듈이 있다면

  • 당신은 다음과 같이 "그것을 사용하는"것. 왜냐하면 스킨 객체는 context.foo()으로 넘어 가서 '호출'되기 때문에 내용을 으로 감쌀 필요가 없습니다. 아니 가져 오기 또는 다른 일반적인 파이썬 물건.

    우리가 할 수있는 한 빨리이 물건에서 벗어나고 더 평범한 정신으로 돌아 가려하지만, login_next는 여전히 portal_skins 스크립트이므로, 포털 _ 스킨 스크립트를 사용하여 수행하려는 작업에 적합합니다. 따라서 login_next 스크립트는 직접 return "Hello World" 할 수 있습니다.

  • 관련 문제