如何在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 变量