2013-05-12 18 views
0

我正在開發一個Django項目,我需要從Amazon Product Advertising API獲取搜索結果。我已經成功地在PHP中使用API​​,但現在正在處理我的第一個Django應用程序。我已經簽署了與亞馬遜有資格證書,密鑰,密鑰等從Django視圖導入分佈式python包

作爲快捷方式,我發現這裏安裝了一個分佈式的Python包: https://bitbucket.org/basti/python-amazon-product-api/overview

問題1:在哪裏,怎麼辦我在Django中訪問一個非Django特定的Python包?我是否需要在設置中添加對包的引用?封裝例如文檔包含一個import語句,這似乎在Django的殼工作(至少沒有錯誤味精):

>>>from amazonproduct import API 
>>> 

問題2:當我想給一個安裝Python包從一個搜索查詢一個Django視圖和模板,如何/在哪裏導入包的對象?

我把Python包安裝在與Django相同的Python本地實例(在Mac OS X 10.8.2上運行Python 2.7和Django 1.5)。

我對Django和Python都很陌生。我已經能夠獲得Django模型,視圖和模板,並且我已經編寫了所有前端腳本來解析和顯示來自Amazon Product Advertising API的XML結果。 Python包似乎擁有我所需要的一切。但是現在我只需要弄清楚如何利用該包創建簽名請求的能力,調用Amazon的RESTful服務並解析生成的XML。

回答

1

看來你對Python的包和Django應用程序有點困惑。如您所知,Django是一個用Python編寫的Web框架,因此,任何Python包/模塊/文件都可以在您的Django代碼中導入。

Django應用程序也是python包,這就是爲什麼你可以做像from my_app import models這樣的東西來導入my_app的模型。不同的是,一般來說,一個Django應用程序與一些django特定文件(models.py, views.py, urls.py等),因此您需要將它們添加到您的INSTALLED_APPS在您的settings.py爲了讓Django做的東西,該應用程序需要完成(例如,生成表格models.py)。

關於你的問題,那amazonproduct包它確實是一個Python包,但不是一個Django應用程序 - 它沒有任何views.pymodels.py。這只是一個python包,它提供了一個友好的界面來查詢亞馬遜的數據。這意味着您不必將其附加到您的INSTALLED_APPS。你想要做什麼就是將它導入無論你在代碼中需要它。我認爲可能在views.py之內,這是您通常處理應用程序邏輯的地方。

恢復:無論您需要從amazonproduct包中訪問方法或類或函數,只需將其正常導入(如您在回答中所述),然後實例化對象或調用通常需要的方法。將您收集的數據傳遞到您正在處理的文件中。

希望這給出一些亮點。如果您對Python的軟件包和模塊有任何疑問,請參閱doc session,這是非常有用的

+0

感謝@PauloBu指向Python模塊上的doc會話的指針。我需要更詳細地瞭解Python如何在Django之外工作,並且您的解釋和鏈接使我走上了正確的軌道。我將在本週通過它,並將回報我的最終解決方案。 – PchopL 2013-05-13 18:50:20

+0

我很高興我能幫上忙。別客氣 :) – 2013-05-13 18:55:43