Django:如何在单独的javascript文件中具有动态值?
我希望将javascript逻辑保存在与Django模板不同的文件中。但是,有些逻辑包含动态值,我希望它们仍然像模板一样呈现。 例如,ajax调用将包含URLDjango:如何在单独的javascript文件中具有动态值?,javascript,django,ajax,django-templates,Javascript,Django,Ajax,Django Templates,我希望将javascript逻辑保存在与Django模板不同的文件中。但是,有些逻辑包含动态值,我希望它们仍然像模板一样呈现。 例如,ajax调用将包含URL url:“{%url”应用程序:列表“%”, 当脚本直接位于模板中时,它将被正确的url替换。当代码位于单独的.js文件中并以这种方式包含时: url不会被替换,代码也会按原样显示。 如何解决这个问题? 谢谢一种可能的方法是在模板中的标记之前设置动态值 例如,在您的list.js文件中: //从html元素的数据集属性获取数据 cons
url:“{%url”应用程序:列表“%”,
当脚本直接位于模板中时,它将被正确的url替换。当代码位于单独的.js文件中并以这种方式包含时:
url不会被替换,代码也会按原样显示。
如何解决这个问题?
谢谢一种可能的方法是在模板中的
标记之前设置动态值
例如,在您的list.js
文件中:
//从html元素的数据集属性获取数据
const form=document.querySelector(“#联系人表单”);
const contactURL=form.dataset['url'];
//或来自页面上的变量
const alternateURL=window.AppURLS['alternate'];
然后,在list.html
django模板中:
window.appURL={
备选:“{%url”应用程序:列表“%}”
};
无法通过嵌入的js文件传递变量。但您可以通过
3
其他方式解决此问题:
解决方案1
在html中编写所需的js代码
<script>
...
{% if this_is_true %}
// do your code when true
{% else %}
// do your code when false
{% endif %}
...
</script>
解决方案3:
声明变量,然后从js文件访问它
<script>
{% if this_is_true %}
const x = true;
{% else %}
const x = false;
{% endif %}
</script>
<script src="{% static 'my/js/file.js' %}">
{%如果这是真的%}
常数x=真;
{%else%}
常数x=假;
{%endif%}
<script>
{% if this_is_true %}
const x = true;
{% else %}
const x = false;
{% endif %}
</script>
<script src="{% static 'my/js/file.js' %}">