我已經在幾個應用程序中使用CakePHP,現在我正在Django中構建我的第一個應用程序。Django中的CakePHP數據源
在CakePHP中,datasource是模型和數據源之間的鏈接。它可能依賴於ORM或者可能訪問來自外部來源(如API)的數據。
我想弄清楚如何在非-ORM數據源的Django中執行相同的操作(例如默認爲Models),以便使用外部API進行操作。
如果您能以正確的方式指向我,我將非常感激。
謝謝!
我已經在幾個應用程序中使用CakePHP,現在我正在Django中構建我的第一個應用程序。Django中的CakePHP數據源
在CakePHP中,datasource是模型和數據源之間的鏈接。它可能依賴於ORM或者可能訪問來自外部來源(如API)的數據。
我想弄清楚如何在非-ORM數據源的Django中執行相同的操作(例如默認爲Models),以便使用外部API進行操作。
如果您能以正確的方式指向我,我將非常感激。
謝謝!
這個概念不匹配Django和蛋糕之間。在Django中,模型顯式地是一個映射到數據庫的ORM。儘管我想你可以編寫一個違反該規則的自定義後端,這似乎很痛苦。
但是,有很多使用非傳統數據庫源的例子,例如在django中使用mongo文檔。如果您對python有更深入的理解,那麼設計一個基類可以相對容易,該基類處理將API包裝到對象實例中所需的所有詳細信息。但是,這不會是Django中開箱即用的東西。可能有第三方應用程序提供該功能,但我並不知道有一個應用程序可以提供該功能。自己做這些事情不會比在蛋糕中做的事情複雜得多,IE中的蛋糕非數據庫數據源需要代碼來提出請求並解析響應,並且這樣做不僅僅是神奇地知道如何處理任何API。
如果你不想寫封裝所有調用api和構造一個模型樣式類以包含所有邏輯的行爲,那麼在django中處理該類的一般方法就是使用urllib2 (如果這是一個遠程API源)並解析請求的結果。
謝謝約翰的回答!其實我已經有了一個包裝與API通信的模塊。我正在將模塊導入視圖,並將所需的數據發送到模板。 但是,我認爲應該有一個更好的/標準的方法來做到這一點...例如,如果我需要寫入API,我應該如何定義我的表單? – tufla 2012-04-05 18:18:42
那麼你將不會擁有由ModelForms提供的好東西(除非你重新實現了API後端的邏輯)。但是,您可以簡單地使用普通窗體並處理從視圖代碼中寫入API的操作......或者更好的方法是在處理寫入的窗體中添加一個方法。你甚至可以創建一個從Form繼承而來的類,但是實現了類似'def write()'和誰的init接受一個url。然後'write()'遍歷clean_data並以一種非常通用的方式正確地發佈數據。 – John 2012-04-06 19:10:56