Jinja模板渲染双引号或单引号为' "

16 投票
2 回答
29011 浏览
提问于 2025-04-17 11:04

你好,我正在尝试在jinja模板中使用Google可视化API。
我拿了一些示例参数并传递给了API,但它把单引号和双引号转换成了'和&。
这是我的脚本:

        <script type="text/javascript">
            //load the Google Visualization API and the chart
            google.load('visualization', '1', {'packages': ['columnchart']});

            //set callback
            google.setOnLoadCallback (createChart);

            //callback function
            function createChart() {

                //create data table object
                var dataTable = new google.visualization.DataTable();

                //define columns
                dataTable.addColumn('string','Quarters 2009');
                dataTable.addColumn('string', 'Earnings');

                //define rows of data
                // answerjson=answerjson.replace("&#39;",'"');
                {% set answerjson1='[["1": "Saturday"], ["6": "Sunday"], ["1": "Wednesday"], ["1": "Monday"], ["1": "Monday"], ["1": "Tuesday"], ["1": "Sunday"]' %}

                dataTable.addRows( {{answerjson1}} );

                //instantiate our chart object
                var chart = new google.visualization.ColumnChart (document.getElementById('chart'));

                //define options for visualization
                var options = {width: 400, height: 240, is3D: true, title: 'Company Earnings'};

                //draw our chart
                chart.draw(dataTable, options);

            }
</script>

这是传递给API的输入:
我放了截图,因为这里显示的是双引号

请帮帮我,我该怎么做。

2 个回答

4

tojson 过滤器可以把数据以 JSON 格式呈现出来:

dataTable.addRows( {{ answerjson1 | tojson }} );

使用 safe 过滤器可能会导致错误,特别是在你之后再把数据转成 JSON 的时候。例如,safe 过滤器生成的 JSON 字符串是用单引号包起来的,而 JSON.parser() 函数只能接受用双引号包起来的字符串作为输入。

30

使用 safe 模板过滤器:

dataTable.addRows( {{ answerjson1 | safe }} );

撰写回答