2012-07-27 89 views
0

在Django中我試圖將一個應用程序(所以只能應用在INSTALLED_APPS)分成若干子目錄,結構如下:Django的應用程序和子目錄

app 
    views.py 
app\subdir1 
    views.py 
app\subdir2 
    views.py 

文件app \ views.py僅由

from subdir1.views import * 

所以我將app.subdir1.views的命名空間摺疊到app.views中。然而,這不是期望的解決方案,我寧願用

import subdir1.views 

,而不是崩潰的命名空間,但是這個結構使得Django的與錯誤抱怨「無法導入app.views.subdir1.json。父模塊app.views。 subdir1不存在。「 這當然是正確的,因爲該父模塊不存在。

所以我想提出的問題是:這個目錄結構可能與否?

回答

0

應該可以的,你可以用app.subdir1.views.foo中的urls.py然後完全避免導入app/views.py

也許__init__.py這些目錄之一中缺少文件?

+0

我試過了,是的,該視圖可以工作,但是嘗試使用syncdb失敗,因爲app \ subdir1沒有被視爲應用程序。在installed_apps中添加app \ subdir1修復了這個問題......但這是我想避免的部分。 – Paul 2012-07-27 10:10:28

+0

如果你只是在你的子目錄中提供視圖,你就不會有這個問題。如果你有模型,那麼除了將它添加到INSTALLED_APPS之外沒有別的辦法。 – 2012-07-27 10:19:16

+0

你已經死了Torsten,我發現它不起作用,但我無法解釋它爲什麼不起作用。因爲在應用程序中,我放置了一個models.py woth行,如:from subdir1.models import * ,據我所知,這會將該subdir1的作用域「解散」到應用程序範圍中。所以可能有些人會爲我學習;-) – Paul 2012-07-27 18:06:46