Vis*_*thi 4 javascript python django django-templates
我正在尝试使用" https://www.google.com/jsapi " 绘制折线图,并从Django视图传递数据;
这是我的模板
<head>
    <script type="text/javascript" src="https://www.google.com/jsapi"></script>
    <script type="text/javascript">
      google.load("visualization", "1", {packages:["corechart"]});
      google.setOnLoadCallback(drawChart);
      function drawChart() {
        data = {{analytics_data}}
        var data = google.visualization.arrayToDataTable(data);
        var options = {
          title: 'Facebook Analytics'
        };
        var chart = new google.visualization.LineChart(document.getElementById('chart_div'));
        chart.draw(data, options);
      }
    </script>
  </head>
  <body>
       <div id="chart_div" style="width: 900px; height: 500px;"></div>
  </body>
</html>
views.py
def show_fb_analytics(request):
     analytics_data = [["Day", "Likes", "Share", "Comments"]]
     data = FbAnalytics.objects.all()
     for item in data:
        date = item.date
            likes = item.likes
            comments = item.comments
            shares = item.shares
            lst = [date, likes, comments, shares]
            analytics_data.append(lst)
     return render(request, 'fbchart.html', {'analytics_data':analytics_data})
该analytics_data应该返回格式数据
[['Day', 'Likes', 'Share', 'Comments'],
 ['31 Aug',  5,      8,    10         ],
 ['01 Sep',  10,      5,    13         ]]
但是在渲染html模板的过程中,它给出了给定格式的数据
[['Day', 'Likes', 'Share', 'Comments'], 
  [u'01Sep', 2, 2, 2]]
意味着它在每个字符串中添加u'和#39,因为我收到错误"未捕获的语法错误:意外的令牌&",我的temlate没有返回折线图.我怎么能删除这个错误?
您应该首先将列表转换为正确的JSON,如下所示:
import json
def show_fb_analytics(request):
    ...
    return render(request, 'fbchart.html', {'analytics_data': json.dumps(analytics_data)})
然后使用"安全"过滤器输出它,因此Django的转义引擎不会干预:
{{analytics_data|safe}}
转换为JSON会将您的列表输出为JavaScript Array文字(而不是Python List文字;虽然两者非常相似,但它们实际上是不同的,在您的情况下,Python具有uJS不具有的前缀等),并使用safe过滤器将阻止Django的模板引擎转换'为'
| 归档时间: | 
 | 
| 查看次数: | 4795 次 | 
| 最近记录: |