2013-03-19 27 views
2

我有一個Django的應用程序,模型存儲數據通過用戶輸入的Web界面。Django的應用程序消費休息API - 在哪裏把代碼

我需要在查看/保存模型實例時使用第三方REST api。我知道如何做到這一點,但是,我不確定的是這個代碼應該在django應用程序中使用。

我的直覺是把這段代碼放在模型類中,但是你也可以使用一個視圖......我只是不確定。

這是如何做過的,有很多帖子要求如何做,但沒有說明放置代碼的最佳位置。

任何指導將受到感謝。

乾杯

回答

3

這是一個主觀問題,所以這裏是一個主觀答案。

首先,確保任何與此外部REST API交互的代碼都駐留在單獨的模塊中。例如,如果您要從字典API中獲取單詞定義,則與此API交談的所有代碼應理想地位於單獨的dictionary模塊中,然後您可以將其導入到您的視圖中。其次,你的models.py只應聲明你的應用程序的數據模型,並定義在這個模型上的操作,而不是其他的。他們不應該關心請求/響應週期,讀取文件,呈現模板,進行HTTP調用或其他任何事情。通過這個邏輯,你應該從視圖中進行這些REST API調用,並且如果需要的話,將返回的數據傳遞給你的模型。

最後,從你的Django應用程序中進行REST調用。 Python在默認情況下會同步(阻止)I/O,這意味着只要應用程序正在等待REST調用完成,它就無法爲任何傳入的HTTP請求提供服務。如果你沒有太多用戶,這不是問題,但對於需要擴展的應用程序,請記住這一點。您可能需要查看Python的異步I/O庫。

+0

你好,非常感謝你的回覆。它已經清除了我關於模型與視圖之間的關係的問題。關於異步的好點,我正在看django-芹菜和某種ajax – Richard 2013-03-19 21:45:00

相關問題