2012-11-25 38 views
1

我已經在heroku(雪松堆棧)上部署了我的應用程序,並且所有工作都很好,直到幾天前,當我注意到我的靜態文件沒有被提供時(出現的代碼'取消' )。接下來我注意到,我的項目突然在manage.py:admin /,css /,img /和js /的同一級別上創建了新文件夾。我根本沒有創建管理員,使用buildin django管理網站,並沒有以任何方式修改它。我確實在我的項目的靜態/內部創建了css,img和js文件夾,並且它仍然存在以及其所有內容。這就像所有靜態文件夾/被複制到manage.py級別。Heroku django - 搞砸了項目結構

運行heroku run ls -l在heroku上顯示相同的變化。我懷疑這些更改會導致靜態文件服務中出現問題。

heroku run python manage.py collectstatic --noinput 

顯示所有複製的文件沒有問題。

我的靜態顯示目錄設置:

STATIC_ROOT = '' 
STATIC_URL = '/static/' 
STATICFILES_DIRS = (
    # Put strings here, like "/home/html/static" or "C:/www/django/static". 
    # Always use forward slashes, even on Windows. 
    # Don't forget to use absolute paths, not relative paths. 
    os.path.join(os.path.dirname(__file__), 'static'), 
) 
STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder', 
    'django.contrib.staticfiles.finders.AppDirectoriesFinder', 
# 'django.contrib.staticfiles.finders.DefaultStorageFinder', 
) 

我不使用S3呢。

如何刪除這些文件?是什麼讓這些小品出現?

回答

1

將Django應用程序部署到Heroku時,會自動運行collectstaticHeroku docs)。這會收集您安裝的應用程序中的所有靜態資產(包括django.contrib.admin)並將它們複製到STATIC_ROOT

檢查您的STATIC_ROOT設置。它可能設置不正確。

Here is a tutorial關於在您的靜態文件中使用S3。

+0

謝謝,根據你的建議我能解決問題;)我發佈我的解決方案作爲另一個答案,以澄清我是如何使它的工作。 – Neara

1

基於此post我瞭解到,所有這些混亂都是由將DEBUG更改爲FALSE引起的。遵循Ohads的建議,我檢查了我的STATIC_ROOT設置,正如你所看到的,它沒有設置。那是我的固定設置:

SETTINGS_PATH = os.path.abspath(os.path.dirname(__file__)) 
STATIC_ROOT = os.path.abspath(SETTINGS_PATH+'/static/') 
STATIC_URL = '/static/' 
STATICFILES_DIRS =() 
STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder', 
    'django.contrib.staticfiles.finders.AppDirectoriesFinder', 
# 'django.contrib.staticfiles.finders.DefaultStorageFinder', 
) 

添加:

if not settings.DEBUG: 
    urlpatterns += patterns('', 
     (r'^static/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.STATIC_ROOT}), 
    ) 
在MYAPP

/urls.py解決我的問題。