2017-05-08 27 views
2

我使用WebPack來設置Django和React。到目前爲止,我已經產生了bundle,我想引用它在我的模板:設置Django和React

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

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

然而,Django的似乎無法找到正確的bundle文件,我得到如下圖所示的404錯誤。我是否在settings.py中正確初始化了所有內容?

enter image description here

編輯:

webpack-stats-local.json:#從配置文件正確生成

{"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

你可以用STATIC_ROOT,STATIC_URL和STATICFILES_DIRS包含settings.py嗎? – PierreOcinom

+0

@PierreOcinom我在屏幕截圖中顯示了除STATIC_ROOT以外的所有內容。不明白你的意思。 – anderish

回答

0

我不是在Django,但你的專家可以簡單地打電話給你的訴endor和帶有腳本標籤的App1文件。

供應商和App1的文件是唯一需要的代碼來加載反應適當的數據。

你的情況檢查你是否正確訪問JavaScript文件的路徑。嘗試提供供應商文件的絕對路徑並查看它是否加載?

+0

不,看起來他的webpack設置是可以的(除了丟失的bundle stats文件 - 至少我沒有看到它的截圖)。而且他肯定不能使用'

0

您的設置看起來很正常,但這些404表明Django無法找到靜態文件,即使它們在那裏。

最可能的原因是一些路徑配置錯誤。雖然staticfiles.views.serve應該考慮所有STATICFILES_DIR s,但我不確定它確實如此。無論如何,嘗試明確定義STATIC_ROOT = os.path.join(BASE_DIR, 'my_website', 'static')

此外,添加一個臨時print(STATIC_ROOT)(或使用調試器)來查看實際路徑 - 也許您的BASE_DIR關閉。很容易錯過目錄級別。

哦,從你的截圖看來,bundles/local/中沒有webpack-stats-local.json。檢查BundleTracker confuguration,它應該大致是這樣的:

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

沒有恰當的path有它會靜靜地失敗。前些日子剛剛有這個問題 - 沒有任何警告,只是該文件沒有找到任何地方。

+0

嘿謝謝你的回覆。我其實有一個'webpack-stats-local.json'文件,只是沒有在圖片中顯示。一切似乎都是按順序進行的。我打印出變量和所有內容,但仍無法找到它。我會做一些編輯。 – anderish

+0

@anderish:奇怪,你的設置看起來不錯,而'STATIC_ROOT'是正確的。你可以嘗試把'test.txt'文件放在'my_website/static'中,並檢查'http:// localhost:8000/static/test.txt'是否工作?如果是這樣,但捆綁仍然是404的 - 我只是想不出任何理由,除了,也許,文件系統權限(但這將是非常奇怪的情況)。如果沒有,請檢查您的URLconfs啓用['... staticfiles.views.serve'](https://docs.djangoproject.com/en/1.11/ref/contrib/staticfiles/#static-file-development-view ),也許有些事情不對。 – drdaeman

+0

它不起作用。我得到一個404錯誤'http:// localhost:8000/static/test.txt'。我的'urls.py':'urlpatterns = url(r'^ admin /',admin.site.urls), url(r'',include('main.urls')) ] + static(settings .STATIC_URL,document_root = settings.STATIC_ROOT)' – anderish