2014-10-12 57 views
1

我在heroku中有一個項目,但無法使靜態文件正常工作。Heroku/Django - 靜態文件已被複制但無法顯示它們

settings.py:

PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__)) 

STATICFILES_FINDERS = (
    "django.contrib.staticfiles.finders.FileSystemFinder", 
    "django.contrib.staticfiles.finders.AppDirectoriesFinder", 
) 

STATIC_URL = '/static/' 
STATIC_ROOT = os.path.join(PROJECT_ROOT, 'static') 
STATICFILES_DIRS =() 

我已經看到了很多的問題,通過加入這個到URL解決,所以我已經做到了,但它不會改變任何東西。

urls.py:

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

那麼collectstatic正常工作:

-----> Preparing static assets 
    Running collectstatic... 
    673 static files copied to '/app/static'. 

所以他們發送的命令:heroku run ls -l說:

heroku run ls -l 
Running `ls -l` attached to terminal... up, run.9609 
total 76 
-rw------- 1 u3968 3968 16 2014-10-12 02:05 contributors.txt 
drwx------ 2 u3968 3968 4096 2014-10-12 02:05 corelib 
-rw------- 1 u3968 3968 137 2014-10-12 02:05 dev-requirements.txt 
-rwx------ 1 u3968 3968 810 2014-10-12 02:05 go.sh 
-rw------- 1 u3968 3968 0 2014-10-12 02:05 __init__.py 
-rw------- 1 u3968 3968 129 2014-10-12 02:05 __init__.pyc 
-rwx------ 1 u3968 3968 898 2014-10-12 02:05 manage.py 
-rw------- 1 u3968 3968 12 2014-10-12 02:05 Procfile 
-rw------- 1 u3968 3968 851 2014-10-12 02:05 requirements.txt 
-rw------- 1 u3968 3968 13 2014-10-12 02:05 runtime.txt 
-rw------- 1 u3968 3968 7385 2014-10-12 02:05 settings.py 
-rw------- 1 u3968 3968 6750 2014-10-12 02:05 settings.pyc 
drwx------ 10 u3968 3968 4096 2014-10-12 02:05 static 
drwx------ 3 u3968 3968 4096 2014-10-12 02:05 templates 
drwx------ 3 u3968 3968 4096 2014-10-12 02:05 theming 
-rw------- 1 u3968 3968 3482 2014-10-12 02:05 urls.py 
drwx------ 3 u3968 3968 4096 2014-10-12 02:05 useraccount 
-rw------- 1 u3968 3968 200 2014-10-12 02:05 wsgi.py 

但是URL /靜態返回一個404作爲heroku的日誌:

2014-10-12 02:06:05.751101+00:00 heroku router - - at=info method=GET path="/static/css/screen.css" ... dyno=web.1 connect=0ms service=54ms status=404 bytes=1879 

我錯過了什麼?

回答

0

好吧,我通過發送他們的Git版本控制我的一切staticfiles所以現在它的作品!

我試圖做兩個對立的事物其實......不發送靜態到Git和不使用第三方應用程序來收集他們...

0

settings.py應該是這樣的:

import os 
BASE_DIR = os.path.dirname(os.path.dirname(__file__)) 

STATIC_ROOT = 'staticfiles' 
STATIC_URL = '/static/' 

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'static'), 
) 

... 
+0

是的,我嘗試了所有不同的設置,但沒有奏效? – 2014-10-12 21:26:46

+0

,如果這是staticfiles_dirs的問題,那麼collectstatic將不起作用,因此它不是從這裏開始的。其實讓staticfiles_dirs爲空允許我的默認STATICFILES_FINDERS踢腳踢找到我的靜態文件,它的工作原理是這樣的,但我的問題是服務這些文件,一旦他們在服務器上(這是這種情況) – 2014-10-12 22:53:22

1

您的網址是無關緊要的,因爲Django不服務靜態文件時,DEBUG爲False。你需要配置你的服務器來獨立完成它:通常你會通過Apache/nginx來完成,但Heroku不使用這些。然而有關於如何讓它工作的full documentation,歸結爲安裝dj-static幷包裝你的WSGI應用程序。

+0

我在調試=真作爲它只是一個開發服務器,我試圖按照這個文檔,但它不工作以及...也許我錯過了一些事情,我會再試一次。 – 2014-10-12 21:27:56

+0

好吧現在,我有WSGI和dj-static,我仍然處於DEBUG = True狀態,​​並且沒有任何工作... – 2014-10-12 22:19:41

0

你試過{%靜態「的CSS/screen.css」%}

+0

我已經加載了所有靜態文件{%load staticfiles%} – 2014-10-16 01:29:43

相關問題