为了账号安全,请及时绑定邮箱和手机立即绑定

Django模板变量和Javascript

Django模板变量和Javascript

MM们 2019-07-15 10:00:49
Django模板变量和Javascript当我使用Django模板呈现器呈现页面时,我可以传入一个包含各种值的字典变量,以便在页面中使用{{ myVar }}.是否有一种方法可以访问Javascript中的相同变量(也许使用DOM,我不知道Django如何使变量可以访问)?我希望能够根据传入的变量中包含的值使用Ajax查找来查找详细信息。
查看完整描述

3 回答

?
心有法竹

TA贡献1866条经验 获得超5个赞

这个{{variable}}直接替换到HTML中。做一个视图源;它不是一个“变量”或任何类似的东西。只是渲染了文字。

话虽如此,您还是可以将这种替代应用到JavaScript中。

<script type="text/javascript"> 
   var a = "{{someDjangoVariable}}";</script>

这给了您“动态”的javascript。


查看完整回答
反对 回复 2019-07-15
?
慕桂英546537

TA贡献1848条经验 获得超10个赞

支票票#17419有关在Django核心中添加类似标记的讨论,以及使用此模板标记与用户生成的数据一起引入的可能的XSS漏洞。评语从amacneil讨论了在票上提出的大部分问题。


我认为最灵活和方便的方法是为您想要在JS代码中使用的变量定义一个模板过滤器。这允许您确保正确地转义数据,并且可以将其用于复杂的数据结构,例如dictlist..这就是为什么我写这个答案,尽管有一个被接受的答案和很多向上。

下面是模板过滤器的一个示例:

// myapp/templatetags/js.pyfrom django.utils.safestring import mark_safefrom django.template import Libraryimport 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>


查看完整回答
反对 回复 2019-07-15
?
慕标5832272

TA贡献1966条经验 获得超4个赞

一个对我有用的解决方案是在模板中使用隐藏的输入字段。

<input type="hidden" id="myVar" name="variable" value="{{ variable }}">

然后以这种方式获取javascript中的值,

var myVar = document.getElementById("myVar").value;


查看完整回答
反对 回复 2019-07-15
  • 3 回答
  • 0 关注
  • 1033 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信