我試圖從一開始就設置好開發我的django項目的最佳設置,並且我無法使所有內容在目錄結構中很好地播放。我已經設置了virtualenv(在這個例子中是env),這樣我就可以爲每個django項目部署一個乾淨的空python環境。django項目目錄結構和python路徑
的基本結構如下:
/env/
/bin
/db <--- Django DB
/downloads
/lib
/static <--- Where css/imgs/js etc is served from
/project/ <--- Django root
/__init__.py
/settings.py
/manage.py
/appsfolder/
/appname/
/__init__.py
/models/
/__init__.py
/somemodel.py
/urls/
/__init__.py
/someurl.py
/views/
/__init__.py
/someview.py
這是基本的佈局;我希望每個項目都有一個應用程序目錄,並且每個應用程序都有一個單獨的文件夾供模型,視圖和url使用。
我遇到的問題是與python路徑以及如何處理模塊。
中的應用程序,我不希望有參考項目時,導入模塊,即我應該使用:
import appname.models.modelname
不是:
import projectname.models.modelname
幫助reusablility
在模型目錄中,我有以下內容init .py
from model1 import ModelName1
from model2 import ModelName2
from model3 import ModelName3
__all__ = ['ModelName1', 'ModelName2', 'ModelName3']
但是當我嘗試使用一個單獨的URL文件(/appname/urls/urlfile.py)和進口車型,如下列:
from appname.models.somemodel import ModelName
我得到一個「模塊找不到」錯誤。
同時:
from appsfolder.appname.models.somemodel import ModelName
工程確定
我相信這是因爲應用程序不能直接Python路徑上,取而代之的則是在一個名爲appsfolder子文件夾,但我不知道如何去解決這個問題,同時保持一切可重用和相對的。
我知道一個解決方案是直接把下站點包python的路徑上的所有應用程序,但我真的不喜歡這個想法,因爲我認爲,應用程序應該在項目中,如果您使用的virtualenv的
這派上了用場用於在項目的根我自己'appviews'文件夾的分裂。他們有一個'模板',爲什麼不是視圖,以及? – Droogans 2012-03-15 21:48:07