如何在 django 模板标签中传递 Javascript 变量

Posted

技术标签:

【中文标题】如何在 django 模板标签中传递 Javascript 变量【英文标题】:How to pass a Javascript variable in django template-tag 【发布时间】:2018-12-20 08:25:06 【问题描述】:

你好我有这个问题

如果有变量

<script>
 var a = True
<script>

我可以像这样使用变量吗

% if a %
  <h1> True</h1>
%else%
  <h1> False </h1>
%endif%

两段代码在同一个页面中

我不想使用过滤器,这会使我的工作变得复杂谢谢

【问题讨论】:

不...因为 javascript 在前端运行,而 Django(模板)在后端运行。 【参考方案1】:

您可以在 JavaScript 中进行 html 修改

例如:

<script>
    var a = true;
    if (a) 
       document.getElementById("your_h2_tag_ID").innerHTML = "True";
    else
       document.getElementById("your_h2_tag_ID").innerHTML = "False";
    
<script>

【讨论】:

【参考方案2】:

不,你不能。对于 Django,var a = True 只是一个字符串。

Django 是创建 HTML 并告诉浏览器使用什么字符串的那个,浏览器会解释字符串并发现它是 JavaScript,所以它会执行并最终看到 a 是一个布尔值。

到那时,Django 早已不复存在

告诉 django 使用 a 作为布尔值的唯一方法是向服务器发出另一个请求 sending a as a JSON or querystring parameter,然后解释来自 python/django 的请求并在模板中使用它。 (相当昂贵的任务)

【讨论】:

以上是关于如何在 django 模板标签中传递 Javascript 变量的主要内容,如果未能解决你的问题,请参考以下文章

django - 如何将多个值传递给模板标签

Django - 自定义模板标签传递关键字参数

在 Django 模板标签中传递请求

在 django 模板 URL 标签中传递参数

如何在自定义模板标签中传递 url 标签?

如何将文字字符串值传递给 django url 模板标签