我有变量bbb =“ youmightalsolike.0.title”;在Django模板文件的javascript中。我想在变量bbb中添加{{和}},就像我在aaa中所做的那样,它可以与我想要的输出42 完美地运行。
var aaa = {{youmightalsolike.0.title}};
console.log("aaa = "+aaa); //aaa = 42
我尝试使用这些没有用的东西。也许我不知道来证实。 再次,我不知道确切的值是什么,所以我不能直接写{{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
答案 0 :(得分:0)
在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%地确定您要达到的目标,但是我希望以上内容能对您有所帮助。