问题here看起来和我的很相似;但是,我尝试了那里的建议,但它对我的情况不起作用,所以也许我的问题毕竟不同。
在我的 html 文件中(在 Javascript 部分的 <script></script>
中),我有:
var snd = new Audio("{% static 'updateMap/cual_es_su_nombre.mp3' %}");
snd.play();
播放 mp3 效果很好;但是,我希望能够替换文件名:cual_es_su_nombre.mp3
与一个变量。我正在从服务器获取文件名。
所以,我做的第一件事是将文件名加载到 Javascript 数组中:
var all_file_names = new Array();
{% for item in all_file_names_from_server %}
all_file_names.push("{{ item |safe }}");
{% endfor %}
然后,最终,我希望能够做到这一点:
var snd = new Audio("{% static 'updateMap/'|add:all_file_names[0] %}");
snd.play();
但是,这不起作用......
最佳答案
Django 模板引擎将在将页面传递到浏览器之前完全完成页面的渲染。您可以使用它来编写 Javascript,但无法从 Javascript 或以依赖于 Javascript 数据结构的方式访问它。我认为你最好的选择是构建一个已解析的静态 URL 数组,而不仅仅是一个文件名数组(如果你不需要两者,则可能不是该数组)。像这样的东西:
var all_file_names = new Array();
{% for item in all_file_names_from_server %}
all_file_names.push("{{ item |safe }}");
all_file_uris.push("{% static 'updateMap/'|add:item|safe %}");
{% endfor %}
然后:
var snd = new Audio(all_file_uris[0]);
snd.play();
关于Django:静态标签内的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28571603/