如何在javascript中更新django变量

Posted

技术标签:

【中文标题】如何在javascript中更新django变量【英文标题】:How to update django variable inside javascript 【发布时间】:2022-01-09 19:37:32 【问题描述】:

就像我们可以访问 JS 部分中的变量一样,例如 "vaiable_name"。我们如何在 javascript 中更新 variable_name 的值?

假设代码如下所示,

% if variable_name %
 <p> Condition is true </p>
% endif %

【问题讨论】:

做一些 ajax 或表单的一部分!我不认为有另一种可能的方式来做到这一点。如果我们假设修改必须保存在数据库中。 【参考方案1】:

您可以添加一个带有 id 的 span 标签,然后在 javascript 中定位该 id

<span id='django_variable_id'>variable_name</span>

<script>
function update_django_variable(new_var)
    /* get the span element */
    var span = document.getElementById('django_variable_id');
    /* set new var here */
    span.innerText = new_var;

</script>

或者只要没有其他同名的变量也可以工作

<span id='var_variable_name'>variable_name</span>

<script>
function update_django_variable(new_var)
    /* get the span element */
    var span = document.getElementById('var_variable_name');
    /* set new var here */
    span.innerText = new_var;

</script>

【讨论】:

比方说,我们想用变量检查 if-else 条件。 我建议在 javascript 中完成所有这些操作【参考方案2】:

一种方法是通过 Django 模板引擎注入一个小的 Javascript,用 variable 替换。

我自己的base.html包含

<script type="text/javascript"> $(document).ready(  function() 
    % block onready_js %% endblock onready_js %   
  ); 
</script>

然后在我想要传递变量值的任何扩展 base.html 的模板中,我可以简单地编写代码

 % block onready_js %
      /* some JS with Django substitutions */
      var foo = "foo";
      ...
 % endblock %

您必须记住的一件事是,您的 JS 不能包含连续的左大括号或右大括号,它们之间没有空格!

(如果block没有定义,那么base.html定义了一个null函数,在文档准备好时执行)

【讨论】:

我没有完全理解,假设单击按钮后,我想更改变量的值。我该怎么办? 抱歉,问题被误解了。我虽然您想要一种将 Django 值转换为 JavaScript 的简单方法。 HTTP 是无状态的。除了提交 POST 或类似请求之外,没有办法从客户端“更改 Django 变量”。如果您不想要完整的表单提交/验证/重定向,您可以在客户端脚本中使用 AJAX,在 Django 服务器中使用 AJAX POST 处理程序。 好的,谢谢......

以上是关于如何在javascript中更新django变量的主要内容,如果未能解决你的问题,请参考以下文章

Django - 如何将 javascript 变量保存到 Django 数据库中? [复制]

如何在 JavaScript 文件中使用 Django 变量?

如何使用modalForm包将javascript整数变量作为主键传递到django url

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

如何在 django 模板中获取带有 javascript 变量的数组元素?

将 Javascript 数据传递给 Django