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?

user3383301
quelle
heroku stackoverflow.com/questions/21141315/…
Ciro Santilli 法轮功 冠状 病 六四.

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

Dhana
quelle
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'),

    )
Sheesh Mohsin
quelle
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')
Sebuhi
quelle
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

Mayur Raj
quelle
0

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

ehacinom
quelle
0
STATIC_ROOT = os.path.join(BASE_DIR, 'assest')
STATICFILES_DIR = [
os.path.join(BASE_DIR, 'static')
]
ChandimaJay
quelle
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.