2011-03-13 70 views
2

我有一个新的网站,我放在一起,其中的一部分有网站用户的统计数据。我想创建一个小部件,其他人可以在另一个网站上使用,通过调用JavaScript从我的服务器读取数据并显示给定用户的统计信息,但我很难找到涵盖django中的特定教程。使用django在外部网站上使用创建自定义小部件

我已经在Alex Maradon的网站[0]上看到了这个链接,但是在我看来,这是将html传递回小部件,我很难弄清楚如何使用xml之类的方法来做到这一点。

是否有任何django应用程序做这个或没有人知道好的方法?

[0] http://alexmarandon.com/articles/web_widget_jquery/

回答

5

这不是Django的问题,你可以通过使用最常见的解决方案来解决这个问题。的JavaScript。

给你的用户这个把他们的网站。

<script type="text/javascript" src="http://mysite.com/widget/user/124546465"></script> 

在Django视图,呈现下一个模板:

(function(){ 
document.write('<div class="mysite-userprofile">'); 
document.write('My visits are {{total_visits}}<br />') 
document.write('</div>') })() 
) 

因此,对你的看法,你可能有这样的事情,在MIME类型是很重要的

def total_visits(request, user_id): 
    user = get_object_or_404(User, id = user_id) 
    total_visits = Visits.objects.filter(user:user).total_visits() #this is a method to count, you may have to write your own logic 
    context = {'total_visits': total_visits} 
    render_to_response('widget_total_visits.html', context, mimetype='text/javascript') 

你能下一步呢?

用户设置,像这样。

<script type="text/javascript"> 
     mysite_options = { 
     'just_friends': True, 
     'theme': 'bluemarine, 
     'realtime': True 
     } 
</script> 
<script type="text/javascript" src="http://mysite.com/widget/user/124546465"></script> 

所以在你的模板,你可以使用之前设置包括你的用户,简单的东西的网站脚本变量。

稍后,您可以使用POST方法从用户客户端收集信息。对于统计数据。

当然使它成为Ajax!

我希望这给你跟着

+0

我婉添加路径,你可以通过设置JavaScript的CSS样式,同时用户可以自由造型widget的。双赢 – 2011-03-13 16:00:49

1

遵守一个规则:保持简单愚蠢!

我知道这可能是非常web 1.0,但在这种情况下iframe真的是你最好的朋友。一个简单的代码如<script>document.write("<iframe src='yoursite.com/userwidget/" + username + "' height='30' width='150' />");</script>在加载时注入一个iframe将节省您编写jsonp异步代码和dom操纵器的时间,并确保您注入到其页面的所有元素都将在每个不同的网站上正确设置样式担心起源政策。

如果你在一个iframe代码插在你页面指向则:

  • 起源是你!你不必担心它。
  • 您可以使用django模板而不是js构造显示的窗口小部件。
  • 他们的CSS不会混淆你的演示文稿。
  • 他们的js不能轻易操纵你的属性;)
  • 这正是iframe设计的目的。
相关问题