簡體   English   中英

找不到heroku本地靜態

[英]heroku local static not found

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

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 local'會返回“未找到”警告:

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:testpw@localhost: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,
}

適用於我的解決方案(24小時后+):

1)安裝最新的穩定版本的whitenoise(我正在使用一個舊的例子,需要whitenoise == 2.0.6)

2)確保在MIDDLEWARE_CLASSES中添加了whitenoise:

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

注意:使用whitenoise == 2.0.6時,將“whitenoise.middleware.WhiteNoiseMiddleware”添加到中間件類將引發錯誤。 您需要升級到最新的穩定版本(目前為whitenoise == 3.1)

我將假設這些管理員文件是來自Django管理員應用程序的文件。 在沒有看到你的項目的情況下,我最好猜測你接下來要解決的問題是:

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

2)您是否正在更改DEFAULT_FILE_STORAGE設置? 這可能會干擾STATICFILES_FINDERS

3)檢查所有靜態文件設置 ,如果要覆蓋其中任何一個,請確保沒有任何警告。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM