2013-05-12 25 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