在App Engine上使用Google可视化API失败...(Python)

-1 投票
2 回答
1387 浏览
提问于 2025-04-15 19:26

我在我的应用程序中尝试使用谷歌可视化API提供的可排序表格,但它没有正常工作。我的应用是用Python写的,使用的是Django框架。

当我把生成的HTML和JavaScript代码复制下来,并保存为一个普通的HTML文件时,它运行得很好。这让我觉得问题可能出在http://www.google.com/jsapi'>没有被包含进来,或者无法正常运行。

有没有其他人遇到过这个问题?我是不是在app.yaml中漏掉了什么配置?

谢谢!

编辑:这是生成的HTML代码:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1 DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
 <head>
   <title> 
      Test
   </title> 
   <link href="/css/css.css" rel="stylesheet" type="text/css" /> 
    <script type='text/javascript' src='http://www.google.com/jsapi'></script> 
    <script type='text/javascript'> 
      google.load('visualization', '1', {packages:['table']});
      google.setOnLoadCallback(drawTable);
      function drawTable() {
        var data = new google.visualization.DataTable();
        data.addColumn('string', 'Number');
        data.addColumn('string', 'Status');
    data.addColumn('string', 'Nickname');
        data.addColumn('string', 'Target');
    data.addColumn('string', 'Recording');
        data.addRows(2);

        data.setCell(0, 0, '0987654321');

    data.setCell(0, 1, 'Active');

        data.setCell(0, 2, 'Nothing');
        data.setCell(0, 3, '1234567890');

    data.setCell(0, 4, 'Enabled');

    data.setCell(1, 0, '0987654321');

    data.setCell(1, 1, 'Active');

        data.setCell(1, 2, 'Nothing');
        data.setCell(1, 3, '1234567890');

    data.setCell(1, 4, 'Enabled');


       var table = new google.visualization.Table(document.getElementById('table_div'));
       table.draw(data, {showRowNumber: true});
      }
    </script> 
 </head> 
 <body> 
    <div id='table_div'></div> 
 </body> 
</html> 

如果保存为HTML文件,这段代码运行得很好。

app.yaml:

application: testapp
version: 2
runtime: python
api_version: 1

handlers:
- url: /(.*\.(mp3|wav))
  static_files: \1
  upload: (.*\.(mp3|wav))

- url: /css
  static_dir: css

- url: /.*
  script: main.py

相关问题:

2 个回答

0

等一下,你是在什么地方进行渲染的呢?visapi的东西应该放在客户端。你是把它放在那了吗?(如果这个问题很明显,那我就抱歉了;不过从你提问的方式来看,确实不是很清楚。)

提供更多细节肯定会有帮助。

0

如果还有其他人遇到这个问题,我之前搞错了页面的头部信息,使用了我为XML输出创建的同一个函数来渲染页面。

这行代码把它搞坏了:handler.response.headers["Content-Type"] = "text/xml"

撰写回答