Vad*_*est 1 javascript python json jinja2
我想将python中的JSON字符串导出为JS变量.
<script type="text/javascript">
var data = JSON.parse('{{ dataJSON }}');
console.log(data)
</script>
Run Code Online (Sandbox Code Playgroud)
如果我打印的内容dataJSON我得到:[{"offset":0,"total":1,"units":[{"village_id":37,"village_name":"Glim
但在JS中我得到了这个: JSON.parse('[{"offset":0,"total":1,"units":[{"village_id":37
我使用jinja2模板引擎:http://jinja.pocoo.org/docs/dev/templates/#if
我该如何解决这个问题?
您需要将数据标记为安全:
var data = {{ dataJSON|safe }};
Run Code Online (Sandbox Code Playgroud)
这可以防止它被HTML转义.没有必要这样使用JSON.parse(); JSON是一个有效的JavaScript子集(至少在Python json模块生成有效子集的情况下).
考虑到这不会使JavaScript安全.您可能想要调整JSON序列化.如果您使用的是Flask,tojson则会提供一个过滤器,以确保您获得JavaScript安全的有效JSON:
var data = {{ data|tojson|safe }};
Run Code Online (Sandbox Code Playgroud)
如果您没有使用Flask,请对JSON进行后处理:
dataJSON = (json.dumps(data)
.replace(u'<', u'\\u003c')
.replace(u'>', u'\\u003e')
.replace(u'&', u'\\u0026')
.replace(u"'", u'\\u0027'))
Run Code Online (Sandbox Code Playgroud)
这是Python代码,用于生成dataJSON可在HTML(包括属性值)和JavaScript中安全使用的值.这里归功于Flask json.htmlsafe_dumps()功能.
| 归档时间: |
|
| 查看次数: |
1091 次 |
| 最近记录: |