Django:如何在单独的javascript文件中具有动态值?

Django:如何在单独的javascript文件中具有动态值?,javascript,django,ajax,django-templates,Javascript,Django,Ajax,Django Templates,我希望将javascript逻辑保存在与Django模板不同的文件中。但是,有些逻辑包含动态值,我希望它们仍然像模板一样呈现。 例如,ajax调用将包含URL url:“{%url”应用程序:列表“%”, 当脚本直接位于模板中时,它将被正确的url替换。当代码位于单独的.js文件中并以这种方式包含时: url不会被替换,代码也会按原样显示。 如何解决这个问题? 谢谢一种可能的方法是在模板中的标记之前设置动态值 例如,在您的list.js文件中: //从html元素的数据集属性获取数据 cons

我希望将javascript逻辑保存在与Django模板不同的文件中。但是,有些逻辑包含动态值,我希望它们仍然像模板一样呈现。 例如,ajax调用将包含URL

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' %}">