2013-03-05 1 views
0

일반적인 구성 요소가있는 웹 응용 프로그램을 개발 중이며 Django 패키지에 이러한 일반 구성 요소 (일부보기, 템플릿, 논리)를 패키징하기로 결정했습니다.Django 패키지의 Django 프로젝트 특정 객체 포함

이제 문제는 : 패키지에 따라 프로젝트에 따라 특정 장고 프로젝트의 변수에 액세스하려고합니다. 이 특별한 경우 :

My Django 패키지에는 관리자 패널이 있습니다. 내가 알고리즘 목록을 관리 할 수있는 맞춤형 관리 패널. 그러나 이러한 알고리즘은 변경됩니다. 하나 개의 특정 장고 프로젝트에서 나는 장고 패키지의 관리자 패널 날 등 무게, 테스트 케이스,

같은 사용자 정의 알고리즘 구성 요소를 편집 할 수있는 또 하나의 내가 5

가있을 수 있습니다, 3 알고리즘이있을 수 있습니다

이제 내 문제는 Django 뷰에서 패키지에서 장고 프로젝트의 알고리즘에 액세스하여 표시하려고합니다. 목록으로, 선택/편집/삭제뿐만 아니라 세부 사항을보고 편집 할 수 있습니다.

이제 내 문제는 당연히 장고 패키지의 장고 프로젝트의 내용을 장고 패키지에 포함시킬 수 없다는 것입니다. 그렇지 않으면 종속성이 생깁니다. 그리고 알고리즘은 각각의 특정 프로젝트에서 독특하고 독특합니다.

간단히 말해, 문제는 패키지가 무엇이든 의존하지 않고 해당 프로젝트에서 사용하는 패키지로 장고 프로젝트의 특정 데이터에 액세스하는 방법입니다.

답변

0

좋아, 그래서 더 많은 조사 후 나는 이것을위한 가능한 해결책을 발견했다. 대답을 기다리는 동안 여기에 정보를 제공 할 것입니다.

패키지 URL을 모듈로로드하는 대신 Django 프로젝트의 변수를 패키지 URL에 전달하는 사용자 지정 함수를 사용하므로 뷰가 필요합니다. 대신 프로젝트 urls.py에 따라서

:

url(r'^package/$', include('package.urls')) 

내가 사용

url(r'^package/$', obtain_package_urls(custom_content)) 

곳 obtain_package_urls() 패키지의 기능입니다 :

def obtain_package_urls(custom_content): 
    urlpatterns = patterns('', 
     url(r'^url1$', view1, {'custom_content': custom_content}, 
     url(r'^url2$', view2, {'custom_content': custom_content}, 
    ) 
    return (urlpatterns, None, None) 

(가) 목표는 Django의 정적 URL 뷰 매핑을 포함하는 include 함수 대신 반환되는이 함수를 사용하는 것입니다. 뷰에 포함 된 사용자 정의 컨텐츠를 사용하는 동적 URL 뷰 매핑.

#Django project settings.py 
obtain_algorithm_list(): 
    return Algorithm.objects.all() 

#Django project urls.py 
from project.settings import obtain_algorithm_list 

urlpatterns = ... 
    ... 
    url(r'^package/$', obtain_package_urls(obtain_algorithm_list()) 
    ... 

#In the package urls.py 
urlpatterns = ... 
    url(r'^view1/$', view1, {'algorithms': algorithms}, 
    ... 

#And then in each package view 
def view(request, algorithms=[]): 
    ... 
    use_for_something(algorithms) 
:

그래서 알고리즘과 효과면에서 나는 일을 결국