在我的script.js中:
pic.src = "/static/photos/1.jpg"; // This works
pic2.src = "{% static 'photos/1.jpg' %}" // Does not work
为什么世界会发生这种情况?因为在我的home.html中,{%static'路径'%}有效:
{% load staticfiles %}
<script src="{% static 'script.js' %}"></script> // This works
是{%load staticfiles%}还是{%load static%}?两者都适用于我,script.js已加载。
答案 0 :(得分:27)
由于您使用的是django的模板语言,因此仅可以在<script>
标记之间的模板中执行此操作。换句话说,如果您希望在外部脚本中使用pic2.src
javascript变量,则需要在<script>
标记之间声明它,如此
<script>
var pic2.src = "{% static "photos/1.jpg" %}"
</script>
然后你可以在你可能加载的外部脚本中访问它:
<script type="text/javascript" src="{% static "js/my_external_script.js" %}"></script>
关于您关于load static
和load staticfiles
的问题,没有什么区别。两者都充当STATIC_URL
中settings.py
的加入者以及文件本身的实际路径,因此两者都适用于您的案例。有关详细信息,请参阅here和here。
答案 1 :(得分:9)
如果您的.js
文件中需要许多静态(或媒体)网址,这可能会更方便:
<script>
var static_url = "{% get_static_prefix %}";
var media_url = "{% get_media_prefix %}";
</script>
然后,所有javascript文件中都可以免费使用这两个网址。
答案 2 :(得分:5)
您可以在模板中指定路径,然后在javascript文件中使用它。
模板:
<script>
var url = "{% static 'photos/1.jpg' %}";
</script>
使用Javascript:
pic2.src = url
答案 3 :(得分:1)
简单的解决方法! :)
index.html
<input type="hidden" id="pic-src" value="{% static 'photos/1.jpg' %}">
script.js
var pic2.src = $('pic-src').val();