Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将python应用程序中的json字符串发送到jinja模板中的javascript_Javascript_Python_Json - Fatal编程技术网

将python应用程序中的json字符串发送到jinja模板中的javascript

将python应用程序中的json字符串发送到jinja模板中的javascript,javascript,python,json,Javascript,Python,Json,我正在尝试使用web服务器上的Flask从python向使用jinja和javascript的客户机发送一个列表。使用json应该很简单。这是我的python代码: @app.route("/demo") def demo(): basket = [{"fruit": "apple", "amount": 3}, {"fruit": "pear", "amount": 1}, {"fruit": "kiwi", "amount": 2}] return render_templa

我正在尝试使用web服务器上的Flask从python向使用jinja和javascript的客户机发送一个列表。使用json应该很简单。这是我的python代码:

@app.route("/demo")
def demo():
    basket = [{"fruit": "apple", "amount": 3}, {"fruit": "pear", "amount": 1}, {"fruit": "kiwi", "amount": 2}]
    return render_template("demo.html", basket=json.dumps(basket))
这是一个简化的代码,在最后的程序中,列表将是数据库查询的结果。jinja模板如下所示:

{%extends“layout.html”%}
{%block title%}
演示
{%endblock%}
{%block main%}
log({{basket}}');
object=JSON.parse({{basket}}})

{%endblock%}
简而言之,
object | tojson | safe
就是这样做的,例如


doSomethingWith({{user.username | tojson | safe}});

如果您尝试{[{'fruit':'apple'…等等会怎么样?也许json不应该以
[
。看我的补充;我终于让它工作了,尽管Javascript与Jinja的结合似乎工作得很奇怪:在一个例子中你需要一个引号,在另一个例子中你不需要。谢谢!我很高兴它工作了,但我仍然认为你需要更好地理解flask模板是如何工作的。我用
tojson
过滤器更新了我的帖子,一个n示例如何在不使用javascript的情况下呈现页面,并解释在示例中添加/删除qoutes时发生的情况。如果它解决了您的问题,则您可以接受答案;{basket | tojson | safe}这个解决方案工作得很好,谢谢!甚至比自动转义要好得多。当然,关于jinja所做的直译,你是对的,我现在意识到引号是如何工作的。另外:为了保持传输数据的顺序,你必须在Python文件中包含以下内容:app.config['JSON_SORT_KEYS']=False
<script type=text/javascript>
    doSomethingWith({{ user.username|tojson|safe }});
</script>