2012-04-16 41 views
7

這是新的項目結構(來自Django 1.4發行說明)。Django 1.4中的靜態文件夾結構?

 
myproject 
|-- manage.py 
|-- myproject 
| |-- __init__.py 
| |-- settings.py 
| |-- urls.py 
| `-- wsgi.py 
`-- polls 
    |-- __init__.py 
    |-- models.py 
    |-- tests.py 
    `-- views.py 

我不知道什麼是我是否應該指向STATIC_ROOT到

myproject/myproject/static/(與settings.py,urls.py在一起......)

OR

頂層目錄myproject/static(myproject,myapp1,myapp2旁邊)?

+3

我不知道「官方」這個詞是什麼,但我認爲頂級目錄更有意義。 – agf 2012-04-16 04:38:57

回答

7

STATIC_ROOT與Python導入無關,所以完全取決於你。正常情況下,myproject/static/,因此os.path.join(PROJECT_ROOT, 'static/')在設置,更容易。

更新爲San4ez建議和筆記裏面settings.py

# Absolute path to the directory static files should be collected to. 
# Don't put anything in this directory yourself; store your static files 
# in apps' "static/" subdirectories and in STATICFILES_DIRS. 
# Example: "/home/media/media.lawrence.com/static/" 

不如把poll應用的靜態文件到poll/static/,根據您的結構。

2

我同意@okm myproject/static/是一個靜態的好地方,但你也可以在你的應用程序中存儲圖像,css和js在myproject/polls/media。比你必須配置django.contrib.staticfiles應用程序,並複製靜態從media與命令STATIC_ROOT

python manage.py collectstatic 

這種方法的優點是,這可以讓你使用靜態傳播你的應用和你的應用程序可以自由地在其他項目

使用
+0

css,js和圖像應該都是myproject/myproject/static中的子文件夾,以及myproject/poll/static。使用名爲'media'的文件夾很危險,因爲它與django中用於上傳圖片和其他文件的文件夾名稱相沖突。它也是admin靜態文件使用的文件夾(在collectstatic之後)。收集靜態確實會將它們收集到生產服務器,然後從中央文件夾(通常位於myproject文件夾結構之外,如/var/www/www.mysite.com/static)提供它們。 – hobs 2012-07-14 21:26:18

1

STATIC_ROOT只是一個文件路徑,其中staticfiles contrib應用程序將收集和存放所有靜態文件。這是收集物品的地點,就這些。關鍵是這個位置是臨時存儲,主要用於打包應用程序進行部署。

staticfiles應用搜索項目從那些在INSTALLED_APPS,另外在STATICFILES_DIRS列出的任何額外的文件路徑位置列出的任何應用程序稱爲static任何目錄收集。

對於我的項目,我創建了一個deploy目錄,其中創建了一個用於靜態文件的www文件夾,以及僅在部署時才使用的各種其他文件。該目錄位於項目的頂層。

您可以將變量指向您的用戶擁有寫入權限的任何位置,而不需要將其放在項目目錄中。