2024-04-25 22:01:51 发布
网友
当我使用Django模板呈现器呈现页面时,我可以传入一个包含各种值的字典变量,以便使用{{ myVar }}在页面中操作它们。
{{ myVar }}
在Javascript中是否有方法访问同一个变量(也许使用DOM,我不知道Django如何使变量可访问)?我希望能够使用基于传入变量中包含的值的AJAX查找来查找详细信息。
直接将{{variable}}替换为HTML。做一个视图源;它不是“变量”或类似的东西。它只是呈现文本。
{{variable}}
话虽如此,您可以将这种替换放入JavaScript中。
<script type="text/javascript"> var a = "{{someDjangoVariable}}"; </script>
这将为您提供“动态”javascript。
注意检查ticket#17419以讨论如何将类似的标记添加到Django core中,以及通过将此模板标记与用户生成的数据一起使用而引入的可能的XSS漏洞。^来自amacneil的{a2}讨论了票据中提出的大多数问题。
我认为最灵活和方便的方法是为您想在JS代码中使用的变量定义一个模板过滤器。这允许您确保正确转义数据,并且可以将其用于复杂的数据结构,例如dict和list。这就是为什么我写这个答案,尽管有一个接受的答案与许多赞成票。
dict
list
下面是模板过滤器的示例:
// myapp/templatetags/js.py from django.utils.safestring import mark_safe from django.template import Library import json register = Library() @register.filter(is_safe=True) def js(obj): return mark_safe(json.dumps(obj))
此模板筛选器将变量转换为JSON字符串。你可以这样使用它:
// myapp/templates/example.html {% load js %} <script type="text/javascript"> var someVar = {{ some_var | js }}; </script>
对我有效的解决方案是在模板中使用隐藏的输入字段
<input type="hidden" id="myVar" name="variable" value="{{ variable }}">
然后以这种方式获取javascript中的值
var myVar = document.getElementById("myVar").value;
直接将
{{variable}}
替换为HTML。做一个视图源;它不是“变量”或类似的东西。它只是呈现文本。话虽如此,您可以将这种替换放入JavaScript中。
这将为您提供“动态”javascript。
注意检查ticket#17419以讨论如何将类似的标记添加到Django core中,以及通过将此模板标记与用户生成的数据一起使用而引入的可能的XSS漏洞。^来自amacneil的{a2}讨论了票据中提出的大多数问题。
我认为最灵活和方便的方法是为您想在JS代码中使用的变量定义一个模板过滤器。这允许您确保正确转义数据,并且可以将其用于复杂的数据结构,例如
dict
和list
。这就是为什么我写这个答案,尽管有一个接受的答案与许多赞成票。下面是模板过滤器的示例:
此模板筛选器将变量转换为JSON字符串。你可以这样使用它:
对我有效的解决方案是在模板中使用隐藏的输入字段
然后以这种方式获取javascript中的值
相关问题 更多 >
编程相关推荐