2011-11-25 61 views
26

我正在使用Django 1.3,Ubuntu 11.10,gunicorn和Nginx運行一個小測試項目,所有內容都在virtualenv中,現在我運行collectstatic將我的靜態文件放入Nginx服務的目錄中。如何在運行Django collectstatic時忽略目錄?

爲了簡單起見,讓我們說我的靜態目錄是一樣的東西/家庭/用戶/靜態和我的項目是在/ home/user中/項目

當我去到/ home /用戶/項目,我運行:

​​

它正確地複製了我安裝的所有應用程序中的靜態文件。不幸的是,這也從Django的管理員複製文件,我想跳過那一個。

我檢查了collecstatic的文檔,並且有一個採用glob風格參數的-i(--ignore)參數,所以我嘗試了命令的不同變體,因爲我不確定忽略模式是指到我的/ home/user/static或原始應用程序目錄。

下面一些例子,didn't工作:

python manage.py collectstatic --noinput -i /home/user/static/admin 
python manage.py collectstatic --noinput -i /home/user/static/admin/* 
python manage.py collectstatic --noinput -i /home/user/static/a* 
python manage.py collectstatic --noinput -i /home/alexis/.virtualenvs/django13/* 
python manage.py collectstatic --noinput -i /home/user/.virtualenvs/django13/lib/python2.7/site-packages/django/contrib/admin* 

我發現,如果我創建的/ home /用戶/靜態/管理員的符號鏈接/home/user/.virtualenvs/django13/lib /python2.7/site-packages/django/contrib/admin/media collectstatic會注意到並跳過複製這些文件,但無論如何,我想讓--ignore選項按照它應該的方式工作。

我錯過了什麼?

感謝您的幫助!

+0

我有同樣的問題,你有沒有設法取得進展? – Hanpan

回答

27

不要編寫完整路徑的目錄。例如用法:

python manage.py collectstatic --noinput -i admin 

此命令不會將admin /目錄複製到STATIC_ROOT路徑。

+0

假設我們必須忽略某個類型的文件,那麼下面的工作將會如下工作 python manage.py collectstatic --noinput -i * .styl 我想忽略的文件的擴展名是.styl? – Sachin

+5

是的。示例: python manage.py collectstatic --noinput -i * .sass – tatlar

+1

如何添加多個忽略?例如,在路徑*和*任何'* .scss'文件中忽略任何'admin'? –