【问题标题】:Encoding JSON in Mako?在 Mako 中编码 JSON?
【发布时间】:2011-04-26 03:21:30
【问题描述】:

我在 mako 中遇到 json 问题。我这样做:

${ to_json( dict( a = 1, b = 2 ) ) }

to_json 在哪里:

<%!
    import simplejson as json

    def to_json( d ):
        return json.dumps( d )
%>

但是,而不是给我

{"a": "1", "b": "2"}

它给了我

{&quot;a&quot;: 1, &quot;b&quot;: 2}

所以 mako 在某处将“更改为”

我应该怎么做?

相比之下,这是一个测试脚本

import simplejson as json

print json.dumps( dict( a=1,b=2 ) )

输出

{"a": 1, "b": 2}

编辑

我将我的功能更改为

<%!
    import simplejson as json

    def to_json( d ):
        return "{\"a\": 1}"
%>

它会将“”更改为&amp;quot;,所以它似乎是mako的问题。

【问题讨论】:

  • 不就是因为你把它输出到了一个HTML页面吗?!
  • 我需要它作为JS的参数,但是不,不同的是它不应该被编码。
  • 请显示将to_json(...) 的结果插入到您的输出中的代码。我猜想在 JavaScript 块中间的某个地方......
  • 这差不多了,它是标准的mako。我会编辑它
  • 我对 Mako 还一无所知。你可以试试${ to_json( dict( a = 1, b = 2 ) ) | n } 吗?

标签: python json mako


【解决方案1】:

好像某处有一个自动过滤器,所以当我改变时

${ to_json( dict( a = 1, b = 2 ) ) }

${ to_json( dict( a = 1, b = 2 ) ) | n }

关闭过滤器,没关系,谢谢

【讨论】:

  • 感谢过滤器,它可以帮助防止 javascript 注入/XSS 咬你!但是当你不想要它时会很痛苦。
  • 如果您能以某种方式告诉 Mako 在使用此过滤器时忽略默认过滤器,那就太好了。否则会很痛苦
猜你喜欢
  • 1970-01-01
  • 2020-07-30
  • 2020-08-24
  • 1970-01-01
  • 2019-06-02
  • 2011-08-03
  • 2019-04-11
  • 2016-04-11
  • 2017-02-17
相关资源
最近更新 更多