我正在开发一个Django项目,我需要从Amazon Product Advertising API获取搜索结果。我已经在PHP中成功使用了API,但现在正在开发我的第一个Django应用程序。我已注册并拥有亚马逊凭据,密钥,密钥等。
作为一种捷径,我在这里找到并安装了一个分布式Python包: https://bitbucket.org/basti/python-amazon-product-api/overview
问题1 :我在哪里以及如何在Django中访问非Django特定的Python包?我是否需要在设置中添加对包的引用?包示例文档包含一个import语句,它似乎在Django shell中起作用(至少没有错误消息):
>>>from amazonproduct import API
>>>
问题2 :当我想从Django视图和模板发送已安装的Python包时,如何/在哪里导入包的对象?
我将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。
答案 0 :(得分: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
中{ {1}}为了让Django完成应用程序需要完成的工作(例如,在settings.py
中生成表格)。
关于你的问题,models.py
包它确实是一个Python包而不是Django应用程序 - 它没有amazonproduct
也没有views.py
。它只是一个python包,它提供了一个友好的界面来查询亚马逊的数据。这意味着您无需将其附加到models.py
。你想要用它做什么就是在你的代码中将 导入它需要它。我想可能在INSTALLED_APPS
里面,你通常会处理应用程序的逻辑。
恢复:无论您需要从views.py
包中访问方法或类或函数,只需正常导入(如您在答案中所述),然后实例化对象或调用您通常需要的方法。将您收集的数据传递到您正在处理的文件中。
希望这能有所启发。如果您对Python的软件包和模块有任何其他疑问,请参阅非常详细记录的doc session。