Ich habe einige Probleme beim Hosting einer einfachen Website, die ich in Heroku erstellt habe. Die Website wurde mit Mezzanine erstellt und verwendet Whitenoise und Gunicorn. Das Problem ist: Ich bekomme 404 Fehler in einigen statischen Ressourcen, wie CSS und JS. Sie können die Probleme auf Ссылка sehen.
Dies ist der Inhalt von Procfile:
%Vor%wsgi.py
%Vor%und hier ist ein Teil von settings.py :
%Vor%urls.py ist wie folgt:
%Vor%Protokoll:
%Vor%Mein Projektordner ist wie folgt:
und die Ausgabe von collect static ist dies:
%Vor%wie Sie sich vorstellen können, wenn ich DEBUG = True richtig eingestellt habe, aber da ich die Produktionsumgebung testen möchte, muss ich DEBUG = False verwenden. Was mache ich falsch?
Sie sollten collectstatic
nicht jedes Mal ausführen, wenn Sie Ihren Web-Dyno starten. Was ist die Ausgabe von heroku run python manage.py collectstatic --noinput
?
Wenn Sie sich die Heroku-Dokumente ansehen, ist es nicht klar, ob Sie diesen Schritt ausgeführt haben:
Django erstellt das Zielverzeichnis, das collectstatic verwendet, nicht automatisch. Daher empfehlen wir, wie in der Abbildung gezeigt, eine Dummy-Datei zu Ihrem Repository hinzuzufügen.
Ihre statische Dateikonfiguration ist fehlerhaft. STATIC_ROOT
muss ein absoluter Pfad sein wie /some/absolute/path/
. Die Einstellung TEMPLATE_DIRS
ist veraltet. Wenn Sie sich auf Django 1.8 befinden, können Sie stattdessen das TEMPLATE-Diktat verwenden. Die Option APP_DIRS
bewirkt, dass django in allen installierten Anwendungsverzeichnissen nach Vorlagenverzeichnissen sucht. Zusätzliche Verzeichnisse können mit der Option DIR
als Liste hinzugefügt werden.
So sollte die settings.py wahrscheinlich aussehen (ich würde das Layout Ihrer Projekte benötigen, um sicher zu sein):
%Vor% Mit dieser Konfiguration sollte die Sammlung und Bereitstellung von statischen Dateien funktionieren . Wenn es nicht funktioniert, geben Sie bitte zusätzliche Informationen über Ihre Projektverzeichnisstruktur und die Ausgabe des Befehls heruko run manage.py collectstatic --noinput
an, wie in der anderen Antwort gefragt.
Zu guter Letzt sollte Ihre Debug-Anwendung niemals aus dem Internet erreichbar sein. Personen mit böswilligen Absichten können aus den Debug-Meldungen eine Menge über Ihr Setup erfahren.
Grüße, Marcel Meißner