使用django创建自定义小部件以在外部站点上使用

时间:2011-03-13 14:46:51

标签: javascript python django widget

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

我在Alex Maradon的网站[0]上看过这个链接,但在我看来这就是将html传回给小部件,我很难找到如何使用像xml这样的东西。

有没有任何django应用程序可以做到这一点,或者有没有人知道好的方法?

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

2 个答案:

答案 0 :(得分:6)

这不是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>') })()
)

所以在你看来,你可能有这样的东西,mimetype很重要

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!

我希望这会给你一条路径

答案 1 :(得分:2)

遵守一条规则:保持简单傻!

我知道它可能非常适合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的目的。