2016-11-16 3 views
0

Der Versuch, Server Static über runserver für die Entwicklung dient, mit Django 1.10Django runserver mit DEBUG Wahr die falschen statischen Dateien

Ich habe 'django.contrib.staticfiles' in meinem INSTALLED_APPS und die folgenden Einstellungen vor:

STATICFILES_FINDERS = (
    "django.contrib.staticfiles.finders.AppDirectoriesFinder", 
    "django.contrib.staticfiles.finders.FileSystemFinder", 
) 

STATICFILES_DIRS = [ 
    path('node_modules'), # resolves to `node_modules/` in the project root 
] 
STATIC_URL = '/static/' 
STATIC_ROOT = path('static') # resolves to `path/` in the project root 

Dies funktioniert gut für Collectstatic, und funktioniert gut über NginX direkt.

Aber mit runserver + DEBUG=True, erwarte ich Django Webserver aus dem Ordner static/ zu dienen, sondern stattdessen von node_modules/ Ordner dient.

Wenn ich node_modules/ entferne/umbenenne, bekomme ich 404s für statische Dateien.

Die statischen Dateien werden durch Kopieren (nicht Symlink) gesammelt.

Ich benutze Django-Kanäle, die auch alles kapern könnten?

Antwort

1

Das macht die App staticfiles: Sie fügt den integrierten runserver-Befehl ein, um statische Dateien direkt aus den Quellverzeichnissen zu liefern, so dass Collectstatic nicht in der Entwicklung ausgeführt werden muss.

bearbeiten Sie die automatische Handhabung von Laufe runserver mit dem --nostatic Flag deaktivieren könnten, und zeigen die static URL an Ihrem STATIC_ROOT manuell:

from django.conf import settings 
from django.conf.urls.static import static 

if settings.DEBUG: 
    urlpatterns += [ 
     static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) 
    ] 
+0

Bingo! Vielen Dank. Obwohl 'static()' eine Liste selbst zurückgibt, brauchen Sie sie nicht in '[]' einzufügen, damit Sie nicht '': (urls.E004) Ihr URL-Muster [. *) $>] ist ungültig. Stellen Sie sicher, dass urlpatterns eine Liste von url() - Instanzen ist.' – DanH

Verwandte Themen