我正在做一个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
答案 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 },
}
当然,如果你只有一个地方,硬编码对你来说是最简单的选择。 :)
快乐的黑客攻击!