javascript - 在 Django 模板中运行 javascript 变量
问题描述
我有变量 bbb = "youmightalsolike.0.title"; 在 django 模板文件的 javascript 中。我想在变量 bbb 中添加 {{ 和 }},就像我在 aaa 中制作的那样,例如它与我想要的输出 42完美运行。
var aaa = {{youmightalsolike.0.title}};
console.log("aaa = "+aaa); //aaa = 42
我试过使用这些没用的。也许我不知道要concantinate。同样,我不知道确切的值是什么,所以我不能直接写 {{youmightalsolike.0.title}}因为这个值“youmightalsolike.0.title”必须来自 onclick 函数。
var bbb = "youmightalsolike.0.title";
console.log("bbb = "+bbb); //bbb = youmightalsolike.0.title
var ccc = "{{bbb}}";
console.log("ccc = "+ccc); //ccc = undefined
解决方案
当您在 django 模板中将变量分配给 javascript 时,在适当的地方添加语音标记非常重要。
如果youmightalsolike.0.title
是在上下文中传递的 python 变量:
django 模板语言也会生成一个 javascript 文件,就像你告诉它的那样。因此,例如,如果youmightalsolike.0.title
等于"Gladiator"
,这将导致(在 django 呈现您的模板之后):
var bbb = "youmightalsolike.0.title"
console.log("bbb = "+bbb); //bbb = youmightalsolike.0.title
var ccc = Gladiator; //here you're setting ccc to undefined
console.log("ccc = "+ccc);
现在,除非您在 javascript 中进一步定义了一些名为 Gladiator 的变量,这就是未定义 ccc 的原因。
要纠正此问题,您需要做的是:
var bbb = "{{youmightalsolike.0.title}}";
渲染时,这将导致:
var bbb = "gladiator"
这将为您提供所需的结果。
编辑:如果youmightalsolike.0.title
来自 javascript 事件:
在这种情况下,您根本不需要使用 django 模板语言。django 所做的所有渲染都发生在服务器端。它会生成一些 HTML 或 javascript(或任何类型的文本)。然后将其发送到客户端并作为网站加载。从此时起,Django 不再涉及任何内容(除了 API 调用),因此您想要对变量执行的任何操作都应该是纯 JavaScript。您将无法在内部{{...}}
或模板标签中使用任何模板变量。
我不再 100% 确定您要达到的目标,但我希望以上内容有所帮助。
推荐阅读
- go - 将 []int64 转换为 []uint64 的最佳方法是什么
- snowflake-cloud-data-platform - Snowflake Snowpipe - 电子邮件警报机制
- javascript - 如何使用 javascript 从 .json 文件中添加动态下拉列表?
- rust - 如何将 TcpStream 存储在 HashMap 中?
- java - Spring boot @Caching with Multiple Keys
- html - 如何将内容定位在图像的中心
- javascript - 根据最大值和长度分组数组
- ios - pod 文件中的 Use_frameworks 与 Use_module_headers
- android - 如何使用 Stripe 从 Android 创建 Card 类型的付款方式?
- c# - 如何将两个不同的表列表放入一个新列表c#