Django模板变量和Javascript

Django模板变量和Javascript

当我使用Django模板呈现器呈现页面时,我可以传入一个包含各种值的字典变量,以便在页面中使用{{ myVar }}.

是否有一种方法可以访问Javascript中的相同变量(也许使用DOM,我不知道Django如何使变量可以访问)?我希望能够根据传入的变量中包含的值使用Ajax查找来查找详细信息。


MM们
浏览 1037回答 3
3回答

心有法竹

这个{{variable}}直接替换到HTML中。做一个视图源;它不是一个“变量”或任何类似的东西。只是渲染了文字。话虽如此,您还是可以将这种替代应用到JavaScript中。<script&nbsp;type="text/javascript">&nbsp; &nbsp;&nbsp;&nbsp;var&nbsp;a&nbsp;=&nbsp;"{{someDjangoVariable}}";</script>这给了您“动态”的javascript。

慕桂英546537

支票票#17419有关在Django核心中添加类似标记的讨论,以及使用此模板标记与用户生成的数据一起引入的可能的XSS漏洞。评语从amacneil讨论了在票上提出的大部分问题。我认为最灵活和方便的方法是为您想要在JS代码中使用的变量定义一个模板过滤器。这允许您确保正确地转义数据,并且可以将其用于复杂的数据结构,例如dict和list..这就是为什么我写这个答案,尽管有一个被接受的答案和很多向上。下面是模板过滤器的一个示例://&nbsp;myapp/templatetags/js.pyfrom&nbsp;django.utils.safestring&nbsp;import&nbsp;mark_safefrom&nbsp;django.template&nbsp;import&nbsp;Libraryimport&nbsp;json register&nbsp;=&nbsp;Library()@register.filter(is_safe=True)def&nbsp;js(obj): &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;mark_safe(json.dumps(obj))此模板筛选器将变量转换为JSON字符串。您可以这样使用它://&nbsp;myapp/templates/example.html{%&nbsp;load&nbsp;js&nbsp;%}<script&nbsp;type="text/javascript"> &nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;someVar&nbsp;=&nbsp;{{&nbsp;some_var&nbsp;|&nbsp;js&nbsp;}};</script>

慕标5832272

一个对我有用的解决方案是在模板中使用隐藏的输入字段。<input&nbsp;type="hidden"&nbsp;id="myVar"&nbsp;name="variable"&nbsp;value="{{&nbsp;variable&nbsp;}}">然后以这种方式获取javascript中的值,var&nbsp;myVar&nbsp;=&nbsp;document.getElementById("myVar").value;
打开App,查看更多内容
随时随地看视频慕课网APP