2011-03-13 68 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設計的目的。
相關問題