解决方案:
我应该早点发现这个。跟随本书(或类似内容)的任何人都可以通过此方法获得帮助:
我将文件放在错误的“静态”目录下:[项目目录] / static,而不是[项目目录] / lists / static,其中“ lists”是已创建的Django“ app”的名称。这两个“静态”目录中都有一个base.css文件(正在加载was),这使我感到困惑。
我正在尝试从[非常好] book中学习Django。
它刚到chapter,其中添加了一些Javascript。在Java方面,我并不是一个新手。
但是我已经用完了全部缓冲区。
我们被告知将这些行放到我们的Django模板文件base.html的末尾:>
,然后紧接着说”源为“ http://localhost:8000/static/jquery-3.3.1.min.js”的加载失败。“我已经做了相当多的搜索以找出可能发生的情况。我在有问题的Django模板文件中尝试过这样的代码:<script src="/static/jquery-3.3.1.min.js"></script> <script src="/static/list.js"></script> <script> initialize(); // NB this is a simple function in the list.js script </script>
NB,为澄清起见,我正在使用Django开发服务器在浏览器中运行此程序。与本书所说的相反,失败的功能测试正在使用
django.contrib.staticfiles.testing.StaticLiveServerTestCase
。我尝试过的所有浏览器(Firefox,Chrome,Opera)均无法加载这些JS文件。如果使用Chrome(控制台),则这两个文件的状态为404,而同一目录下/目录下的两个.css文件的状态为200。在FF(v。72)的情况下,控制台消息更加含糊:对于这两个文件,控制台首先给出了一个令人困惑的MIME相关消息: (“ text / html”)不是有效的JavaScript MIME类型。“
http://localhost:8000/static/jquery-3.3.1.min.js
...以上都不改变任何东西。我正在运行的Django服务器也显示404 ...,但仅适用于JS文件:
<script type="text/javascript" src="/static/jquery-3.3.1.min.js"></script>
<script LANGUAGE="JavaScript" src="/static/jquery-3.3.1.min.js"></script>
<script type="application/javascript" src="/static/jquery-3.3.1.min.js"></script>
怀疑我可能会不知所措,我仔细检查并三重检查:这些具有精确名称的精确JS文件确实位于相关的“静态”目录中。我不知道这些MIME的内容是什么,以及它如何如此严重地阻止JS文件的加载。为了检查我的机器上的MIME类型,这是值得的:
[19/Apr/2020 18:19:04] "GET / HTTP/1.1" 200 1451
[19/Apr/2020 18:19:05] "GET /static/jquery-3.3.1.min.js HTTP/1.1" 404 1670
[19/Apr/2020 18:19:05] "GET /static/base.css HTTP/1.1" 200 33
[19/Apr/2020 18:19:05] "GET /static/list.js HTTP/1.1" 404 1634
[19/Apr/2020 18:19:05] "GET /static/bootstrap/css/bootstrap.min.css HTTP/1.1" 200 117305
[19/Apr/2020 18:19:05] "GET /static/list.js HTTP/1.1" 404 1634
我很难相信这是相关的,因为我在所有3种浏览器上都遇到问题,但是有一个FF错误消息的“了解更多”链接,该链接指向mike@M17A ~ $ grep 'js' /etc/mime.types application/javascript js application/json json
,我们的内容如下:
[从Firefox 72开始,也选择不使用MIME嗅探 如果提供了Content-type,则应用于顶级文档。这个可以 导致HTML网页在以下情况下被下载而不是呈现 它们以text / html以外的MIME类型提供。确保 正确设置两个标题。
站点安全测试人员通常希望设置此标头。
我的FF版本?是的,72。
[实际上是如何“设置标题”?并不是说这一定是解决方案……但是大概不会造成伤害。
根据Sraw的评论进行编辑
适用于jquery-3.3.1.min.js的Chrome开发人员工具标头:here解决方案:我应该早点发现这一点。本书(或类似书籍)后面的任何人都可以得到帮助:我将文件放在错误的“静态”目录下:[项目目录] / ...
我将文件放在错误的“静态”目录下:[项目目录] / static,而不是[项目目录] / lists / static,其中“ lists”是已创建的Django“ app”的名称。这两个“静态”目录中都有一个base.css文件(正在加载
was