Django:静态标签内的变量

标签 django django-templates django-staticfiles

问题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/

相关文章:

python - Django - 重叠日期范围的表单验证

javascript - 在 JS 脚本中使用 Django 模板标签可以吗

python - Django:如何将 QuerySet 转换为字符串

python - 用于从 Google 云存储呈现静态图像的 Django 设置

python - 如何使 STATIC_URL 在外部 JS 文件中工作 (Django)

django - 静态文件 - 找不到页面

django - 在单个谷歌云应用程序引擎实例上部署 Django REST+React 项目。是否可以?

django - 登录会导致 Django 中的/accounts/profile/

mysql - 5000 万个节点层次结构或更大

python - 在 Django 模板中列出目录文件内容