Fiz*_*izi 2 python json jinja2 flask
我有一些Python数据将被发送到JavaScript图表.我将其转储到JSON并将其传递给模板.当我渲染数据时,它包含html实体(")而不是引号,这是无效的.如何正确地将JSON数据从Python传递到JavaScript?
pieData = [{'color': '#400068', 'name': 'xyz', 'value': 10}, {'color': '#4a8624', 'name': 'abc', 'value': 30}]
render_template('index.html', piedata=json.dumps(pieData))
Run Code Online (Sandbox Code Playgroud)
var pieData2 = {{ piedata }};
// renders as
var pieData2 = [{"color": "#5461ae", "name": "fizi.yadav", "value": 10}, {"color": "#e1dce4", "name": "surya.pradhan", "value": 30}, {"color": "#7835f0", "name": "fred.hsu", "value": 276}]
Run Code Online (Sandbox Code Playgroud)
dav*_*ism 10
Jinja会自动隐藏可能不安全的字符(例如引号)以避免安全问题.您需要通过使用|safe模板中的过滤器或将其包装Markup在视图中来告诉它您正在呈现的数据是安全的.您也可以使用|tojson过滤器而不是手动解析和标记JSON.
用于Markup从视图中将其标记为安全.
from markupsafe import Markup
render_template('index.html', piedata=Markup(json.dumps(pieData)))
Run Code Online (Sandbox Code Playgroud)
或者在模板中将其标记为安全.
{{ piedata|safe }}
Run Code Online (Sandbox Code Playgroud)
优选地,只需在模板中转换它而不json.dumps在视图中调用.较旧版本的Flask需要调用|tojson|safe,但|safe不再需要.
{{ piedata|tojson }}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7438 次 |
| 最近记录: |