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

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

假设代码如下所示,

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

【问题讨论】:

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

标签: javascript python html django


【解决方案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 处理程序。
  • 好的,谢谢......
猜你喜欢
  • 2011-06-03
  • 2021-05-10
  • 2019-03-05
  • 2022-01-06
  • 1970-01-01
  • 2018-07-12
  • 1970-01-01
  • 2020-12-07
  • 1970-01-01
相关资源
最近更新 更多