Джейк, кажется, что вы вставляете теги '1001 *' в свой код js. 'datamade' может быть:
data.setCell('foo', 0, 'bar');<br>data.setCell('foo', 0, 'bar');
Это не исполняемый файл js, потому что html-теги не читаются интерпретатором js. Вы фактически пишете неполное выражение сравнения (не что иное, как переменная с именем br). Не пытайтесь вставлять разрывы страниц в ваш код, а просто присоединяйтесь к пустой строке. datamade = ''.join(datamake)
Edit:
Тем не менее, в общем случае не рекомендуется использовать цикл для вывода более 100 строк js. Вам лучше отправлять весь объект в js в формате json и потом зацикливать его на клиенте.
Я бы посоветовал это:
<link rel="stylesheet" type="text/css" href="http://visapi-gadgets.googlecode.com/svn/trunk/wordcloud/wc.css"/>
<script type="text/javascript" src="http://visapi-gadgets.googlecode.com/svn/trunk/wordcloud/wc.js"></script>
<script type="text/javascript" src="http://www.google.com/jsapi"></script>
<div id="wcdiv"></div>
<script type="text/javascript">
google.load("visualization", "1");
google.setOnLoadCallback(draw);
function draw() {
var data = new google.visualization.DataTable();
data.addColumn('string', 'Text1');
data.addRows(160);
var tweets = {{tweets}};
for (var i in tweets) {
data.setCell(i, 0, tweets[i]);
}
var outputDiv = document.getElementById('wcdiv');
var wc = new WordCloud(outputDiv);
wc.draw(data, null);
}
</script>
А у вас на сервере файл показывает следующее:
tweets1 = []
fetched = urlfetch.fetch("http://api.twitter.com/1/statuses/user_timeline.json?screen_name="+tweets.username+"&count=200")
statustext = json.loads(fetched.content)
for tweetInfo in statustext:
tweets1.append(tweetInfo["text"])
tweetsJson = json.dumps(tweets1)
content_values = {
'tweets':tweetsJson,
'username':tweets.username,
}