2016-04-21 3 views
6

próbuję wdrożyć mojej aplikacji Django do sieci, ale pojawia się następujący błąd:Python Django: Używasz staticfiles aplikację bez ustawić STATIC_ROOT ustawienia

You're using the staticfiles app without having set the STATIC_ROOT setting to a filesystem path

Jednak zrobiłem w moim production.py:

from django.conf import settings 

DEBUG = False 
TEMPLATE_DEBUG = True 
DATABASES = settings.DATABASES 

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

# Update database configuration with $DATABASE_URL. 
import dj_database_url 
db_from_env = dj_database_url.config(conn_max_age=500) 
DATABASES['default'].update(db_from_env) 

# Static files (CSS, JavaScript, Images) 
# https://docs.djangoproject.com/en/1.9/howto/static-files/ 

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

STATIC_URL = '/static/' 

# Extra places for collectstatic to find static files. 
STATICFILES_DIRS = (
    os.path.join(PROJECT_ROOT, 'static'), 
) 

# Simplified static file serving. 
# https://warehouse.python.org/project/whitenoise/ 

STATICFILES_STORAGE = 'whitenoise.django.GzipManifestStaticFilesStorage' 

Odpowiedz

8

Co jest plik production.py? Jak importujesz swoje ustawienia?

W zależności od tego, jak otrzymałeś ten błąd (wyświetlenie django przez serwer wsgi lub w wierszu poleceń), sprawdź, czy jest to domyślny plik ustawień, manage.py lub wsgi.py.

Jeśli chcesz manuallly skonfigurować ustawienia użyć, używać coś takiego:

./manage.py --settings=production 

Gdzie production jest dowolny moduł Pythona.

Co więcej, plik ustawień nie powinien importować niczego związanego z django. Jeśli chcesz podzielić ustawienia dla różnych środowisk, użyj czegoś takiego.

Plik settings/base.py

# All settings common to all environments 
PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__)) 
STATIC_URL = '/static/' 
STATIC_ROOT = os.path.join(PROJECT_ROOT, 'static') 

Files jak settings/local.py, settings/production.py ...

# Production settings 
from settings.base import * 
DEBUG = False 
DATABASES = … 
0

Ustaw STATIC_ROOT ustawienie do katalogu, z którego chcesz służyć tych plików, na przykład:

STATIC_ROOT = "/var/www/example.com/static/"

Ustawienia, których używasz, są przeznaczone do programowania. Sprawdź dokumentację Django, aby uzyskać więcej informacji. here