2012-01-24 4 views
0
내 views.py에 정의 된 함수를 전달하기 위해 노력하고

, 다음과 같이 내 프로젝트에서 사용하는 타사 장고 응용 프로그램에 settings.py의 특정 설정을 지정하여 내가 내 프로젝트 settings.py를 통해 제 장고 django app에 내 django app에 정의 된 callable을 전달하는 방법은 무엇입니까?</p> <pre><code>ENDLESS_PAGINATION_PAGE_LIST_CALLABLE = myapp.views.get_pagination_pages </code></pre> <p>및 I :

import myapp 
ENDLESS_PAGINATION_PAGE_LIST_CALLABLE = myapp.views.get_pagination_pages 

다른 오류를 시도 다음 오류 NameError: name 'lend_borrow' is not defined

있어 AttributeError: 'module' object has no attribute 'views'

나는 또한 호출 경로를 지나가는 시도 :

ENDLESS_PAGINATION_PAGE_LIST_CALLABLE = 'myapp.views.get_pagination_pages' 

그러나 타사 응용 프로그램은 좋아 보이지 않는다. 내가 가지고있다 Caught TypeError while rendering: 'str' object is not callable

여기에 사용되는 타사 응용 프로그램은 django endless pagination입니다. INSTALLED_APPS에 포함되어 있습니다.

내 앱에서 정의한 callable을 settings.py를 통해 타사 앱에 전달하는 방법은 무엇입니까?

답변

1

명백히 앱의 기대치는 호출 가능하며 문자열이 아닙니다. 작동한다면, 이것은 작동합니다 :

from myapp.views import get_pagination_pages 
ENDLESS_PAGINATION_PAGE_LIST_CALLABLE = get_pagination_pages 

을하지만, 당신이보기 파일을로드하려고하면 당신은 settings 다른 어떤 파일 전에로드되는 것을 알고 있어야 그 모델과 그 인 - 수입 turn은 설정을로드해야하고, 순환 가져 오기가있을 수 있으며,이를 피하는 가장 좋은 방법은 import models이 아닌 파일 (예 : utils.py)에 함수를 배치하는 것입니다.

기능이 간단하다면, settings 그 파일이나 그 파일과 평행을 이룬다.

+0

감사합니다 Lakshman.I는 설명 한 후에 의미가 있습니다. 지금은 'settings.py'에 함수를 넣을 것입니다. 장기적으로는 타사 앱을 포크하고 호출 가능 경로에 대한 문자열을 허용하도록 수정합니다. – tamakisquare