2017-05-08 8 views
2

Ich verwende WebPack, um Django und React einzurichten. Bisher habe ich ein bundle erzeugt und ich versuche, es in meiner Vorlage zu verweisen:Einrichten von Django und Reagieren

{% extends "main/base.html" %} 
{% load render_bundle from webpack_loader %} 

{% block main %} 
<div id="App1"></div> 
{% render_bundle 'vendors' %} 
{% render_bundle 'App1' %} 
{% endblock %} 

Allerdings kann Django nicht scheint die richtigen bundle Dateien zu finden und ich bekomme einen 404 Fehler in der Abbildung unten dargestellt . Habe ich alles richtig in der initialisiert?

enter image description here

EDIT:

webpack-stats-local.json: # korrekt von Konfigurationsdateien generiert

{"status":"done","chunks":{"App1":[{"name":"App1-a1f17f437b3aacf3188f.js","path":"/Users/andyxu/Documents/my_website/my_website/static/bundles/local/App1-a1f17f437b3aacf3188f.js"}],"vendors":[{"name":"vendors.js","path":"/Users/andyxu/Documents/my_website/my_website/static/bundles/local/vendors.js"}]}} 

print(STATIC_ROOT) ==> /Users/andyxu/Documents/my_website/my_website/static

+0

Könnten Sie bitte settings.py mit STATIC_ROOT, STATIC_URL und STATICFILES_DIRS einschließen? – PierreOcinom

+0

@PierreOcinom Ich habe alles im Screenshot außer STATIC_ROOT gezeigt. Nicht sicher was du meinst. – anderish

Antwort

0

Ich bin kein Experte in django aber Sie kann einfach deinen v anrufen endor und App1-Dateien mit Skript-Tag.

Anbieter und App1-Dateien sind die einzige erforderliche Code reagieren entsprechende Daten zu laden.

In Ihrem Fall überprüfen Sie, ob Sie den Pfad zu JavaScript-Dateien korrekt zugreifen. Versuchen Sie, einen absoluten Pfad zu den Herstellerdateien anzugeben und festzustellen, ob sie geladen wird.

+0

Nein, es scheint, dass sein Webpack-Setup OK ist (mit Ausnahme der fehlenden Bundle-Stats-Datei - zumindest sehe ich es auf dem Screenshot nicht). Und er kann '

0

Ihre Einstellungen sehen normal aus, aber diese 404 zeigen an, dass Django die statischen Dateien nicht finden kann, obwohl sie dort sind.

Die wahrscheinlichste Ursache ist eine Pfadfehlerkonfiguration. Während staticfiles.views.serve alle STATICFILES_DIR s berücksichtigen sollte, bin ich nicht genau sicher, dass es tut. Versuchen Sie auf jeden Fall, STATIC_ROOT = os.path.join(BASE_DIR, 'my_website', 'static') explizit zu definieren.

Fügen Sie auch eine temporäre print(STATIC_ROOT) (oder Debugger verwenden), um den tatsächlichen Pfad zu sehen - vielleicht ist Ihre BASE_DIR aus. Es ist sehr leicht, dort eine Verzeichnisebene zu verpassen.

Oh, und von Ihrem Screenshot scheint es, dass es keine webpack-stats-local.json in bundles/local/ gibt. Überprüfen Sie Ihre BundleTracker confuguration, sollte es etwa so aussehen:

new BundleTracker({ 
    path: path.join(__dirname, 'my_website/static/bundles'), 
    filename: 'webpack-stats-local.json' 
}) 

Ohne eine geeignete path da es wird stillschweigend scheitern. Hatte gerade dieses Problem neulich - keine Warnungen, nur die Datei war nirgendwo zu finden.

+0

Hey danke für die Antwort. Ich habe tatsächlich eine 'webpack-stats-local.json'-Datei, nur wurde nicht auf dem Bild gezeigt. Alles scheint in Ordnung zu sein. Ich habe die Variablen und alles ausgedruckt, aber es kann immer noch nicht gefunden werden. Ich werde einige Änderungen vornehmen. – anderish

+0

@anderish: Seltsam, Ihre Einstellungen sehen gut aus, und 'STATIC_ROOT' ist korrekt. Können Sie versuchen, 'test.txt' in 'meine_website/static' zu setzen und zu überprüfen, ob' http: // localhost: 8000/static/test.txt' funktioniert? Wenn das der Fall ist, aber die Pakete immer noch 404 sind - ich kann mir einfach keinen Grund vorstellen, außer vielleicht für Dateisystemberechtigungen (aber das wäre wirklich ein merkwürdiger Fall). Wenn nicht - überprüfen Sie Ihre URLconfs wo Sie ['... staticfiles.views.serve'] aktivieren (https://docs.djangoproject.com/en/1.11/ref/contrib/staticfiles/#static-file-development-view), vielleicht ist da etwas nicht in Ordnung. – drdaeman

+0

Es funktioniert nicht. Ich erhalte den Fehler 404 "http: // localhost: 8000/static/test.txt". Meine 'urls.py':' urlpatterns = [ URL (r '^ admin /', admin.site.urls), URL (r '', include ('main.urls')) ] + statische (Einstellungen .STATIC_URL, document_root = settings.STATIC_ROOT) ' – anderish

Verwandte Themen