2016-12-21 2 views
3

Ich kann meine App (über Django) zu Heroku bereitstellen, wenn DEBUG = True, aber wenn DEBUG = False, bekomme ich einen Serverfehler. Ich denke, es hat damit zu tun, wie ich meine statischen Dateien eingerichtet habe. Wenn ich "STATICFILES_STORAGE = 'whitenoise.django.GzipManifestStaticFilesStorage' auskommentiere" "bekomme ich keine Fehlermeldung, aber die Seite ist komplett unformatiert. Hier ist der relevante settings.py Code:Whitenoise und/oder statische Dateien verursachen Serverfehler (500)

INSTALLED_APPS = [ 
...  
    'django.contrib.staticfiles', 
... 
] 

ALLOWED_HOSTS = ['*'] 

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

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


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

ich meine statischen Ordner in allen möglichen Orten (selben Ordner wie settings.py, im Stammordner usw.) hinzugefügt haben ohne Erfolg.

Irgendwelche Ideen?

+0

Führen Sie 'Python manage.py Collectstatic' & versuchen Sie es erneut, und auch, was ist der Fehler genau nicht 500, setzen Sie DEBUG = False & versuchen Sie' python manage.py runserver', und überprüfen Sie die Stack-Trace –

+0

Als eine allgemeine Regel sollten Sie den django runserver und die statischen Dateien in der Produktion vermeiden. Sie sollten sie nur für Entwicklungszwecke verwenden. – 2ps

+0

Unzusammenhängend, aber wichtig: Bitte geben Sie aus Sicherheitsgründen die Domänen an, die Sie tatsächlich in den 'ALLOWED_HOSTS' Einstellungen verwenden. Benutze 'ALLOWED_HOSTS = ['*']' nicht, obwohl dies möglich ist. Siehe https://docs.djangoproject.com/en/1.10/ref/settings/#allowed-hosts für die zugehörigen Dokumente. – Peterino

Antwort

0

Diese statischen Dateieinstellungen stammen direkt von der Heroku-Website (https://devcenter.heroku.com/articles/django-assets). Als ich python manage.py collectstatic lief, bekam ich einen Schlüsselfehler 'DATABASE_URL', den ich export einen Wert für hatte und als ich dann meine Dateien nach Heroku schob, funktionierte die Webseite richtig.

1

Möglicherweise haben Sie vergessen, die whitenoice-Middleware in Ihre settings.py MIDDLEWARE-Einstellung aufzunehmen. Bearbeiten Sie Ihre settings.py Datei und fügen Sie Whitenoise auf die MIDDLEWARE_CLASSES Liste, vor aller anderen Middleware abgesehen von Djangos SecurityMiddleware:

MIDDLEWARE_CLASSES = [ 
# 'django.middleware.security.SecurityMiddleware', 
'whitenoise.middleware.WhiteNoiseMiddleware', 
#... 
] 

Weitere Informationen finden Sie in der Whitenoise docs finden: http://whitenoise.evans.io/en/stable/django.html

Gehen Sie durch die Schritt- Schritt-für-Schritt-Setup, um zu sehen, was Sie vermissen. Die Heroku-Docs tendieren dazu, die Middleware-Hinzufügung wegzulassen - was den Fehler verursacht - und vielleicht fehlt noch etwas für Ihre Anwendung.

Verwandte Themen