knk*_*knk 13 javascript python flask
我在烧瓶views.py中有这个
def showpage():
...
test = [1,2,3,4,5,6]
return render_template("sample.html",test=test)
Run Code Online (Sandbox Code Playgroud)
我的样本.html中有这个
<script> var counts = {{test}}; </script>
Run Code Online (Sandbox Code Playgroud)
这给了我一个空的计数变量.如何获得与python中的测试列表相同的计数?
tbi*_*icr 19
将变量插入模板时{{ test }},需要使用对象表示.对于int的列表,[1,2,3,4,5,6]它将被呈现为[1, 2, 3, 4, 5, 6],因此它是有效的javascript数组,但是这种方法不是安全的复杂对象,没有类似javascript的表示,例如,test = [1,2,3,4,5,any]将呈现因为[1, 2, 3, 4, 5, <built-in function any>],这只是一个例子,永远不会奏效.
隐式转换为烧瓶中的javascript对象存在tojson过滤器:
<script> var counts = {{ test|tojson }}; </script>
Run Code Online (Sandbox Code Playgroud)
因此,如果对象是JSON可序列化的,则将全部呈现,否则模板引擎将引发异常.
您还可以将javascript代码发送到您的模板:
from flask import json
return render_template("sample.html",test=json.dumps(test))
Run Code Online (Sandbox Code Playgroud)
但它不是一个好方法,最好使用tojson也是HTML标记安全的过滤器.
我更喜欢不在模板中混合任何javascript代码,并使用ajax分割模板,javascript和javascript数据.如果这种方法很难,我宁愿使用tojson过滤器.
您可以在烧瓶视图中使用json.dumps,在javascript代码中使用JSON.parse.
在python视图中:
def showpage():
...
test = [1,2,3,4,5,6]
test = json.dumps(test)
return render_template("sample.html",test=test)
Run Code Online (Sandbox Code Playgroud)
在JavaScript代码中:
<script> var counts = JSON.parse("{{ test }}"); </script>
Run Code Online (Sandbox Code Playgroud)
小智 7
你也可以使用
{{ test|safe }}
Run Code Online (Sandbox Code Playgroud)
或者
{{ test|tojson|safe }}
Run Code Online (Sandbox Code Playgroud)
该safe过滤器应用到script标签内使用。
| 归档时间: |
|
| 查看次数: |
27313 次 |
| 最近记录: |