【发布时间】:2011-05-09 22:10:32
【问题描述】:
我正在尝试使用 Google 的可视化示例创建一个 wordcloud:
<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);
{{datamade}}
var outputDiv = document.getElementById('wcdiv');
var wc = new WordCloud(outputDiv);
wc.draw(data, null);
}
</script>
我在 main.py 文件中创建 {{datamade}},然后将其作为模板变量传递:
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"])
datamake = []
n = 1
for n in range(160):
tweet = tweets1[n]
datamake.append("data.setCell("+str(n)+", 0, '"+tweet+"');")
datamade = '<br>'.join(datamake)
content_values = {
'datamade':datamade,
'username':tweets.username,
}
当我打印 {{datamade}} 时,我看到了正确的 Javascript 代码。当我将这些值硬编码到我的 statuspage.html 中时,javascript 会正确执行。但是当我将变量直接传递给 javascript 时,javascript 无法正常执行。
我的 javascript 在模板值被传递之前执行吗?不知道如何对此进行调整。我会很感激任何建议。
免责声明:我完全是新手。
谢谢! 杰克
【问题讨论】:
-
尝试使用
'datamade': SafeString(datamade)而不是'datamade': database。 Django 可能会转义您的 javascript/html,而使用 SafeString 会阻止这种情况。
标签: javascript python django google-app-engine