2016-05-14 81 views
2

'heroku local'找不到靜態文件,但'python manage.py runserver'找到沒有問題的靜態文件。你能幫我解決這個問題嗎?heroku本地靜態未找到

settings.py寫着:

PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__)) 
STATIC_ROOT = os.path.join(PROJECT_ROOT, 'static') 
STATIC_URL = '/static/' 
STATICFILES_STORAGE = 'whitenoise.django.GzipManifestStaticFilesStorage' 

我跑collectstatic和靜態文件複製到STATIC_ROOT:

python manage.py collectstatic 

manage.py runserver命令」找到靜態文件沒有問題:

python manage.py runserver 

雖然 'Heroku的地方' 返回警告 '未找到':

11:52:04 AM web.1 | [19/May/2016 10:52:04] WARNING [django.request:170] Not Found: /static/admin/css/base.css 
11:52:04 AM web.1 | [19/May/2016 10:52:04] WARNING [django.request:170] Not Found: /static/admin/css/base.css 
11:52:04 AM web.1 | [19/May/2016 10:52:04] WARNING [django.request:170] Not Found: /static/admin/css/login.css 
11:52:04 AM web.1 | [19/May/2016 10:52:04] WARNING [django.request:170] Not Found: /static/admin/css/login.css 

不知道這裏發生了什麼。 'heroku local'和'manage.py runserver'都應該看到靜態文件。

注: 我使用Django的== 1.8.2和settings.py包含:

import os 
import dj_database_url 

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

SECRET_KEY = 'secretkey' 

DEBUG = True 

ALLOWED_HOSTS = [] 

INSTALLED_APPS = (
    # 'django.contrib.sites', 
    'django.contrib.admin', 
    'registration', 
    'django.contrib.auth', 
    'django.contrib.contenttypes', 
    'django.contrib.sessions', 
    'django.contrib.messages', 
    'django.contrib.staticfiles', 
    'dbbackup', 
    'listable', 
    'rest_framework', 
    'bootstrap3', 
    'django_crontab', 
) 

ACCOUNT_ACTIVATION_DAYS = 7 # One-week activation window; you may, of course, use a different value. 
REGISTRATION_AUTO_LOGIN = True # Automatically log the user in. 

MIDDLEWARE_CLASSES = (
    'django.contrib.sessions.middleware.SessionMiddleware', 
    'django.middleware.common.CommonMiddleware', 
    'django.middleware.csrf.CsrfViewMiddleware', 
    'django.contrib.auth.middleware.AuthenticationMiddleware', 
    'django.contrib.auth.middleware.SessionAuthenticationMiddleware', 
    'django.contrib.messages.middleware.MessageMiddleware', 
    'django.middleware.clickjacking.XFrameOptionsMiddleware', 
    'django.middleware.security.SecurityMiddleware', 
) 

ROOT_URLCONF = 'track.urls' 

TEMPLATES = [ 
    { 
     'BACKEND': 'django.template.backends.django.DjangoTemplates', 
     'DIRS': [os.path.join(BASE_DIR, 'templates')], 
     'APP_DIRS': True, 
     'OPTIONS': { 
      'context_processors': [ 
       'django.template.context_processors.debug', 
       'django.template.context_processors.request', 
       'django.contrib.auth.context_processors.auth', 
       'django.contrib.messages.context_processors.messages', 
      ], 
     }, 
    }, 
] 

WSGI_APPLICATION = 'track.wsgi.application' 

LANGUAGE_CODE = 'en-us' 
TIME_ZONE = 'UTC' 
USE_I18N = True 
USE_L10N = True 
USE_TZ = True 

FIXTURE_DIRS = (
    os.path.join(BASE_DIR, 'fixtures'), 
) 

MEDIA_ROOT = os.path.join(BASE_DIR, 'media') 
MEDIA_URL = 'media/' 

REST_FRAMEWORK = { 
    # Use Django's standard `django.contrib.auth` permissions, 
    # or allow read-only access for unauthenticated users. 
    'DEFAULT_PERMISSION_CLASSES': [ 
     'rest_framework.permissions.DjangoModelPermissionsOrAnonReadOnly' 
    ], 
    'DEFAULT_PARSER_CLASSES': (
     'rest_framework_xml.parsers.XMLParser', 
    ), 
    'DEFAULT_RENDERER_CLASSES': (
     'rest_framework_xml.renderers.XMLRenderer', 
    ), 
} 

DATABASES = {'default' : dj_database_url.config(default='postgres://testuser:[email protected]:5432/testdb')} 

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

STATICFILES_STORAGE = 'whitenoise.django.GzipManifestStaticFilesStorage' 

BOOTSTRAP3 = { 
    'include_jquery': True, 
} 

回答

6

爲我的作品(24小時後+)解決方案:

1)安裝白噪聲的最新的穩定版本(我是從一個古老的例子,這需要白噪聲工作== 2.0.6)

2)請確保您添加白噪聲到MIDDLEWARE_CLASSES:

MIDDLEWARE_CLASSES = (
    'whitenoise.middleware.WhiteNoiseMiddleware', 
) 

注意:在使用白噪聲== 2.0.6將拋出一個錯誤,當添加「whitenoise.middleware.WhiteNoiseMiddleware」到中間件類。您將需要升級到最新的穩定版本(目前白噪聲== 3.1)

+0

只想說巨大的巨大謝謝! –

0

我要承擔這些管理文件是從Django管理應用程序的人。在沒有看到您的項目的情況下,我最好猜測接下來應該排除故障的位置:

1)檢查django.contrib.admin是否在您的INSTALLED_APPS中。

2)你是否改變DEFAULT_FILE_STORAGE設置?這會潛在地干擾STATICFILES_FINDERS

3)檢查所有static files settings,如果要覆蓋其中任何一個,確保沒有任何警告。

如果你發佈你的整個settings.py文件,我會更好地調試你的問題。

+0

感謝您@miketheredherring,是管理的文件是從Django管理應用程序。是的,django.contrib.admin包含在INSTALLED_APPS中。我沒有改變DEFAULT_FILE_STORAGE。我已經添加了上面settings.py的內容。 – Andrew