【问题标题】:How can I transfer a python object for use in a JavaScript variable?如何传输 python 对象以在 JavaScript 变量中使用?
【发布时间】:2014-06-24 08:59:56
【问题描述】:

我使用的是 Bottle 和 Python 2.7。

我想将一个列表变量从我的 Bottle 控制器传递到视图页面,它将在 JavaScript 变量中使用。

@app.route('/foo'):
def foo():
    l = [{'name':'Matthew'}]
    return template('foo', l=l)

我也做了:

l = json.dumps([{'name':'Matthew'}]

在我看来

<script type="text/javascript">
    $(document).ready({
        var l = {{l}}
        l.forEach(function(entry) {
            console.log(entry);
        });
    });
</script>

但是我的控制台说我有语法错误。当我打开 HTML 时,它呈现为:

var l = [{&quot;name&quot;: &quot;Matthew&quot;]

如何传输 python 对象以在 JavaScript 变量中使用?

【问题讨论】:

    标签: javascript python bottle


    【解决方案1】:

    {{}} 之间的替换是 HTML Entity encoded 以防止 XSS 等。

    试试这个:

    var l = {{!l}};
    

    【讨论】:

    • 这样做不安全吗?
    • 如果l 是用户生成的内容,则不安全。如果您知道 l 仅包含有效的 JSON,这并不是不安全的。
    【解决方案2】:

    Bottle(通过 SimpleTemplate 引擎)正在转义输出以防止 XSS 漏洞。这很好,一般来说。您可以使用! 暂时禁用转义,例如:

    var l = {{!l}};
    

    它的文档是here

    【讨论】:

    • 这样做不安全吗?
    • 最安全的假设是不这样做,因此默认情况下会对其进行转义。不过也可以,这取决于数据的来源。如果它来自受信任的来源,例如开发人员或(可能)管理员,则可能没问题。否则,不。
    猜你喜欢
    • 2023-03-27
    • 2019-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-19
    • 2016-04-02
    • 2022-12-19
    相关资源
    最近更新 更多