2017-05-08 78 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