2013-03-05 144 views
0

我正在開發一個web應用程序與普通的部件,並決定打包在Django包的通用組件(一些看法,模板,邏輯)Django項目的特定對象。包含在Django包

現在的問題是:我想要訪問的變量我具體的Django的項目,根據項目,從包中。在這種特定的實例:

我的Django的包有一個管理面板。一個定製的管理面板,允許我管理一系列算法。但是,這些算法會改變。在一個特定的Django項目我可能有3種算法,在一個又一個,我可能有5

在Django的包管理面板允許我編輯自定義算法組件,如重量,測試用例等

現在我的問題是,在Django視圖中,我想要訪問Django項目的算法以顯示它們。作爲列表,用於選擇/編輯/刪除,還可以詳細查看並編輯它們。

現在我的問題是,很明顯,我不能包括從包的Django Django的項目的東西,否則會成爲依賴。這些算法在每個特定項目中都是不同的和獨特的。

因此,簡而言之,問題是如何通過該項目所用封裝訪問Django項目的具體數據,未做包依賴的東西。

回答

0

好的,經過一番調查後我發現了一個可能的解決方案。在等待答案的同時將留在這裏作爲參考。

不是加載包的網址,因爲我使用經過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)