2017-11-24 4 views
0

Django 프로젝트의 일부로 내 사용자는 다양한 옵션 중에서 선택할 수 있습니다. 각 옵션의 기능은 별도의 응용 프로그램에 저장됩니다. 내 질문은Django에서 Apps 하위 집합 반복하기

MyProject/ 
    MyProject 
    App1 
    App2 
    Options/ 
     Option1/ 
     Option2/ 
     Option3/ 
     … 
    … 
    manage.py 

등 옵션 1, 옵션 2는 그 자체로 각각의 앱이며, INSTALLED_APPS에 나열된 : 옵션에 포함 된 각각의 응용 프로그램 반복하는 방법이 있나요 내 프로젝트 구조는 다음과 같이 보입니다 예배 규칙서. 예를 들어 각 응용 프로그램에 utils.py라는 파일이 있고 각 utils.py에 foo라는 함수가 있다고 가정합니다.

이 같은 일을하는 방법이 있나요 :

from .. import Options 
survey = [ app.utils.foo() for app in Options] 

이 실패, 그냥 모든 응용 프로그램을 반복하는 방법은 무엇입니까? 아마도 django.apps으로 할 수있는 것이 있습니까?

답변

1

방법에 따라 apps.py를 구성했습니다.

from django.apps import apps 

for name, app in apps.app_configs.items(): 
    if name in ['OPTIONS-N']: 
     utils = app.module.utils 
+0

안녕하세요, 정말 감사합니다. 나는 [OPTIONS-N '] 비트를 제대로 작동시킬 수 없지만, 옵션 디렉토리에 포함 된 모든 응용 프로그램의 목록을 요약하면됩니까? 또는 익숙하지 않은 구문이 있습니까? – Tim

+0

또한,이 날 오류 준다 : 모듈 'Options.Option1' 'utils'특성이 없습니다. .options1 import utils에서 포함 시키면 괜찮습니다.하지만 각 응용 프로그램마다 해당 행이 필요할 것입니다.이 행은 동적 인 것이 좋기 때문에 코드의 첫 부분을 무시합니다. – Tim

+0

예, "Option-N"은 옵션 목록의 줄임말입니다. 모든 "Option-N"폴더에'__init __. py'가 있는지 확인하십시오. 'from. '줄을 추가해야 할 수도 있습니다. import utils'가 있습니다. – Tobey

0

settings.py는 표준 파이썬 파일, 그래서보기, 또는 경우에 INSTALLED_APPS 목록을 가져올 수 없습니다 당신은 왜 그것을 필요로 이제까지 : 다음

from settings import INSTALLED_APPS 

단지

for app in INSTALLED_APPS: 
    ... 
+0

답변 해 주셔서 감사합니다. 나는 INSTALLED_APPS가 문자열의 목록이기 때문에 이것이 작동한다고 생각하지 않는다. 또한 options 폴더에 포함 된 앱뿐만 아니라 모든 앱을 반환합니다. – Tim

+0

충분합니다. 나는 그때 필요한 애플 리케이션을 정렬하는 일종의 정규식을 적용 상상했다. – 16shells