В моей основной директории проекта у меня есть каталог настроек, который имеет следующие файлы: local.py
, base.py
, production.py
и __init__.py
. При управлении collectstatic файлы сохраняются в staticfiles папку в директории проектаСтатические файлы Django и Heroku
local.py
STATICFILES_STORAGE = 'whitenoise.django.GzipManifestStaticFilesStorage'
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.8/howto/static-files/
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
)
PROJECT_DIR = os.path.dirname(__file__)
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
STATIC_URL = '/static/'
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'static'),
)
base.py
STATICFILES_STORAGE = 'whitenoise.django.GzipManifestStaticFilesStorage'
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.8/howto/static-files/
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
)
STATIC_URL = '/static/'
PROJECT_DIR = os.path.dirname(__file__)
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'static'),
)
production.py
import os
from django.conf import settings
DEBUG = False
TEMPLATE_DEBUG = True
# Parse database configuration from $DATABASE_URL
import dj_database_url
DATABASES['default'] = dj_database_url.config()
# Honor the 'X-Forwarded-Proto' header for request.is_secure()
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
# Allow all host headers
ALLOWED_HOSTS = ['*']
# Static asset configuration
import os
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
STATIC_ROOT = '/static/'
STATIC_URL = '/static/'
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'staticfiles'),
)
Когда я запускаю следующую команду: heroku run python manage.py collectstatic --noinput
Я получаю сообщение об ошибке: You're using the staticfiles app without having set the STATIC_ROOT setting to a filesystem path.
Делайте то, что говорит сообщение об ошибке. 'STATIC_ROOT' должен быть каталогом вашей файловой системы, и вы получили его как веб-каталог. Вы имели в виду 'STATIC_ROOT = os.path.join (BASE_DIR, 'static')'? –
Так следующий способ сделать это: 'STATIC_ROOT = os.path.join (base_dir, 'staticfiles') STATIC_URL = '/ статический /' STATICFILES_DIRS = ( os.path.join (base_dir,«статический '), ) ' –
Я использую STATIC_ROOT = normpath (присоединяюсь (SITE_ROOT,' assets ')) лично, но похоже, что у вас есть предложение TBA. Кроме того, взгляните на [Django Whitenoise] (https://github.com/evansd/whitenoise) – bwarren2