我正在做一个Django项目,在那里我需要从Amazon产品广告API中获得搜索结果。我已经成功地在PHP中使用了API,但现在正在开发我的第一个Django应用程序。我已经注册了亚马逊的凭证,钥匙,密匙等等。
作为一种快捷方式,我在这里找到并安装了一个分布式Python包:https://bitbucket.org/basti/python-amazon-product-api/overview
问题1:在何处以及如何访问Django内的非Django特定的包?是否需要在设置中添加对包的引用?包示例文档包括一个import语句,它似乎在Django shell中工作(至少没有错误信息):
>>>from amazonproduct import API
>>>问题2:当我想从Django视图和模板发送已安装的package搜索查询时,如何/在哪里导入包的对象?
我将Python包安装在与Django相同的Python本地实例中(在MacOSX10.8.2上运行Python2.7和Django 1.5 )。
显然,我对Django和Python都是新手。我已经能够让Django模型、视图和模板正常工作,我已经编写了所有前端脚本来解析和显示来自AmazonProduct广告API的XML结果。Python包似乎满足了我的需求。但是现在我只需要弄清楚如何利用包的能力来创建一个签名的请求,调用亚马逊的RESTful服务并解析结果的XML。
发布于 2013-05-12 23:16:55
你似乎对python的包和Django应用程序有点困惑。如您所知,Django是用Python编写的web框架,因此,任何python包/模块/文件都可以在Django的代码中导入。
Django应用程序也是python包,这就是为什么您可以做像from my_app import models这样的东西来导入my_app模型。区别在于,一般情况下,Django应用程序附带了一些django特定文件(models.py, views.py, urls.py等),因此需要将它们添加到settings.py中的INSTALLED_APPS中,以便Django完成应用程序需要完成的工作(例如,在models.py中生成表)。
关于您的问题,这个amazonproduct包确实是一个package,但不是Django应用程序,-it没有任何views.py或models.py。它只是一个python包,它提供了一个查询Amazon数据的友好界面。这意味着您不必将其附加到INSTALLED_APPS中。您想要使用它的是在代码中需要它的任何地方导入它。我认为可能是在views.py中,这是您通常处理应用程序逻辑的地方。
恢复:在需要从amazonproduct包访问方法或类或函数的地方,只需正常导入它(如您在回答中所述),然后实例化对象或调用您通常需要的方法。传递您正在处理的文件中收集的数据。
希望这能给你一些光明。如果您对Python的包和模块有任何其他疑问,请参考这个doc会话,它是,非常,有很好的文档。
https://stackoverflow.com/questions/16512906
复制相似问题