Django {%static' path'在javascript文件中的%}

时间:2015-01-13 22:52:04

标签: django

在我的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已加载。

4 个答案:

答案 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 staticload staticfiles的问题,没有什么区别。两者都充当STATIC_URLsettings.py的加入者以及文件本身的实际路径,因此两者都适用于您的案例。有关详细信息,请参阅herehere

答案 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();