未找到django文件错误:当静态目录中的javascript文件试图访问静态目录中的另一个文件时?

时间:2018-03-13 14:08:40

标签: javascript django

我正在做一个django项目。我可以访问" custom.js"静态文件夹路径中的文件。这是我的" index.html"中的一行。文件。

<script type="text/javascript" src="{% static 'crypto_app/js/custom.js' %}" ></script>

但内部&#34; custom.js&#34;文件正在使用:

$(window).ready(function() {
'use strict';
$.vegas('slideshow', {
  backgrounds:[
    { src: 'images/bg-slider/bg-1.jpg', fade:1000 },
    { src:'images/bg-slider/bg-2.jpg', fade:1000 },
    { src:'images/bg-slider/bg-3.jpg', fade:1000 }
})();

因此,由于文件地址错误,我无法访问图像。它显示未找到文件。

是否有一些django方法将图像路径声明为变量并从&#34; custom.js&#34;文件?以下是我的目录结构:

|   admin.py
|   apps.py
|   models.py
|   tests.py 
|   tree.txt
|   urls.py
|   views.py
|   
+---migrations
|   |   __init__.py|           
+---static
|   \---crypto_app      
|       +---css
|       |           
|       +---fonts      
|       +---images  
|       |   \---bg-slider
|       |           bg-1.jpg
|       |           bg-2.jpg
|       |           bg-3.jpg
|       |           
|       \---js
|               custom.js               
+---templates
|   \---crypto_app
|           index.html

1 个答案:

答案 0 :(得分:0)

首先回答你的问题,没有没有Django特定的东西让你在JavaScript文件中获得这些图像OOTB的路径。 Django会强迫您通过HTML访问(如示例#2所示)。

您可以安装一些Django应用程序。

现在解决你的难题。 由于您使用{% static %}模板标记加载JavaScript,因此您需要执行类似操作。

当然,有几种方法可以实现这一目标:

1)对网址进行硬编码,{% static %}基本上将您的STATIC_URL与您提供的路径连在一起。因此,请使用相同的URL并将其附加到图像网址。假设STATIC_URL设置为/static/,您的新硬编码网址将与/static/images/bg-slider/bg-1.jpg一致,依此类推。

2)创建一个选项对象并将其粘贴到window上。在index.html

<script>
    window.options = {
        staticUrl: {{ STATIC_URL }},
    };
</script>

然后在JS代码中使用它

backgrounds:[
    { src: `${window.options.staticUrl}images/bg-slider/bg-1.jpg`, fade:1000 },
}

当然,如果你只有一个地方,硬编码对你来说是最简单的选择。 :)

快乐的黑客攻击!