Collectstatic kann nicht ausgeführt werden


73

Ich bin neu in Django! Wenn ich den Befehl benutze, python manage.py collectstaticerhalte ich diesen Fehler

django.core.exceptions.ImproperlyConfigured: You're using the staticfiles app without having set the STATIC_ROOT setting to a filesystem path

Aber ich kann den Server erfolgreich ausführen.

Meine statischen Dateideklarationen sind:

STATIC_ROOT = ''

STATIC_URL = '/static/'


STATICFILES_DIRS = (

    ('assets', os.path.join(PROJECT_DIR, '../static')),
)

und Debug wird auf true gesetzt

DEBUG = True

Wie kann ich das beheben? Ansonsten fehlen Installationspakete?


Antworten:


150

Versuche dies,

PROJECT_DIR = os.path.dirname(os.path.abspath(__file__))
STATIC_ROOT = os.path.join(PROJECT_DIR, 'static')

Schauen Sie sich https://docs.djangoproject.com/de/dev/ref/settings/#std:setting-STATIC_ROOT an


Danke :) Funktioniert! Bevor ich diese Anwendung mit statischem root als leer benutzte. Aber es hat funktioniert! Was könnte jetzt das Problem sein?
user3383301

Sie müssen den statischen Ordner definieren. Alle statischen Dateien werden in diesem Ordner gesammelt. You're using the staticfiles app without having set the STATIC_ROOT setting to a filesystem path
Dhana

10

Sie müssen den Pfad in STATIC_ROOT in settings.py angeben, in dem alle Ihre statischen Dateien erfasst werden, wie zum Beispiel: -

STATIC_ROOT = "app-root/repo/wsgi/static"

STATIC_URL = '/static/'

STATICFILES_DIRS = (
    ('assets', 'app-root/repo/wsgi/openshift/static'),

    )

1

Nun, hatte auch diesen Fehler. Ich habe es repariert:

STATIC_URL = '/static/'
if DEBUG:
   STATICFILES_DIRS = [
   os.path.join(BASE_DIR, 'static'),
   ]
else:
   STATIC_ROOT = os.path.join(BASE_DIR,'static')

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

1

Sie können in jedem Unterordner einen statischen Ordner erstellen, in dem sich die erforderlichen Dateien befinden. Fügen Sie in settings.py die folgenden Codezeilen hinzu:

PROJECT_DIR = os.path.dirname(os.path.abspath(__file__))
STATIC_ROOT = os.path.join(PROJECT_DIR, 'static')
STATIC_URL = '/static/'

Nach dem Ausführen wird python manage.py collectstatic ein neuer statischer Ordner in Ihrem übergeordneten App-Ordner erstellt


0

Ich musste STATIC_ROOTund STATIC_URLüber die STATICFILES_DIRSErklärung setzen.



0
STATIC_ROOT = os.path.join(BASE_DIR, 'assest')
STATICFILES_DIR = [
os.path.join(BASE_DIR, 'static')
]

2
Vielen Dank für dieses Code-Snippet, das möglicherweise nur begrenzte, sofortige Hilfe bietet. Eine richtige Erklärung würde ihren langfristigen Wert erheblich verbessern, indem sie zeigt, warum dies eine gute Lösung für das Problem ist, und es für zukünftige Leser mit anderen, ähnlichen Fragen nützlicher machen. Bitte bearbeiten Sie Ihre Antwort, um eine Erklärung hinzuzufügen, einschließlich der von Ihnen getroffenen Annahmen.
Codedge

Es gibt einen Tippfehler: "Assets"
17.
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.