2010-12-20 37 views
1

假設我有一個名爲「blog」的Django應用程序。將調用放置在哪個外部API上,這個API依賴於Model?

有一個叫Post的模型,我有一個外部API調用,它返回給定時間內最受歡迎的帖子列表,例如Google Analytics API。

我的問題是:哪裏是我應該放置,使調用外部API代碼預期的地方,從每個崗位解析ID,查詢數據庫和相應的分類模型列表?

我不認爲它應該活在Manager或在templatetag。任何提示或建議?

提前致謝!

編輯:期望的結果可能需要在整個項目的幾個地方,所以如果我把代碼視圖,我不得不重複。

回答

3

應該在視圖中進行,或者更好,如果你的視圖代碼越來越雜亂,把它放在一個輔助模塊中。

import util 
def view(request): 
    util.process_post_rankings(request.user.id) 
    # ... write additional logic and render to template 

但是,要依靠外部apis向用戶呈現頁面時要小心謹慎。事情可能會出錯,花費很多時間,API可能無法響應等等......更好地使用Javascript異步執行,並在數據準備好時更新頁面。

+0

謝謝,湯米。幫手模塊的建議非常棒! – Tiago 2010-12-20 16:44:58

+0

另外,關於使用外部API的好技巧。謝謝! – Tiago 2010-12-20 22:20:04

1

這聽起來像它應該在一個視圖中進行,因爲這樣你將返回一個模板,所有需要的內容。

+0

謝謝拉西爾。我澄清了這個問題,正如我應該提到的那樣,我可能會在整個項目的多個地方使用這個有序的帖子列表。 – Tiago 2010-12-20 16:36:15

+0

太棒了,好像助手方法就是答案。 – Rasiel 2010-12-20 20:48:52