2012-05-29 85 views
5

我有一個的Django 1.3項目,此選項settings.pyDjango的1.4(MEDIA_ROOT,STATIC_ROOT,TEMPLATE_DIRS)

SITE_ROOT = os.path.dirname(os.path.realpath(__ 文件 __))

STATIC_ROOT = os.path.join(SITE_ROOT, '靜態')

MEDIA_ROOT = os.path.join(SITE_R OOT, '媒體')

TEMPLATE_DIRS =( os.path.join(SITE_ROOT, '模板'),)

的Django 1.4默認settings.py中移動名稱與項目名稱相同的子目錄。因爲靜態,媒體模板目錄現在必須移動在相同的子目錄?

這是我必須做的,或者只是改變STATIC_ROOT,MEDIA_ROOT和TEMPLATE_DIRS選項?

我知道這兩種變體都可以,但是在Django 1.4中這是最佳做法嗎?

而且我知道每個應用程序都可以擁有自己的模板和靜態目錄。

最好是把所有其他應用程序目錄放在同一個子目錄內?這不是在默認情況下使用manage.py的startApp

+0

請參閱https://docs.djangoproject.com/en/1.4/ref/django-admin/#startapp-appname-destination和https://docs.djangoproject.com/en/1.4/releases/1.4/# updated-default-project-layout-and-manage-py – rantanplan

+0

我看到這個,但不認爲它回答我的問題。他們只是說它可能用於兩種方式 –

+1

噢好吧。那麼最好把所有相關的*操作*代碼放在'myproject/myproject'下,然後有'myproject/tests','myproject/docs'等等。至於靜態/媒體,這取決於我通常希望我的應用程序是自主/可插入的,所以我的每個應用程序都有自己的「靜態」文件夾。 – rantanplan

回答

7

OK,我遵循的是這個計劃發生的事情:

myproject/requirements.txt - PIP安裝包

myproject/deployment - 部署的東西像服務器配置文件,固定裝置(虛擬數據)等

myproject/docs - 項目的文檔

myproject/tests - 項目的測試

myproject/myproject - 項目的操作代碼(和settings.py,urls.py)

擴大myproject/myproject文件夾:

myproject/myproject/app1 - 一個普通的應用程序(包含其特定的模板/靜態文件)

myproject/myproject/app2 - 另一個常規應用程序(與上面相同)

myproject/myproject/website - 半特殊應用程序,按慣例。

website應用房屋基本上4兩件事:

1)的空models.py(使得Django會考慮它作爲一個有效的應用程序)

2)與所述入口點index視圖views.py。也許一些其他視圖不適合任何其他特定的應用程序。

3)a management dir定製django commands適用於整個項目。

4)a templates具有404.html和505.html的dir。它還有一個名爲website的子目錄,其中包含所有其他應用程序的通用/基本html模板,其中包括,另加 ,index.html

5)a static dir,隨後的子目錄名爲cssjsmedia以獲取全局靜態文件。

我猜想沒什麼特別的。我認爲大多數人都遵循類似的模式,但是如果有的話,我想在這裏表現出任何低效率。

編輯: 至於設置生產VS發展我用 流行settings_local模式,你可以閱讀here,並最終將 鉛你here,它描述了一個更好的模式。

+0

使用此設置,您對本地/ dev/test/QA/UAT /生產環境的不同設置有什麼作用?您是否考慮在部署目錄下放置單獨的設置? – Jordan

+0

@Jordan我做了大多數人直到最近才做的事。我在settings.py的同一級別上有一個settings_local.py。然後settings.py會嘗試:從settings_local導入*除了:pass'。 settings_local.py當然會被我的VCS忽略。我認爲現在有更多更好的解決方案。這是一個完整的主題。 – rantanplan

+0

我也和rantanplan一樣 –