0

我正在开发一个 Django 项目,我需要从亚马逊产品广告 API 获取搜索结果。我已经在 PHP 中成功使用了 API,但现在正在开发我的第一个 Django 应用程序。我已注册并拥有 Amazon 凭证、密钥、密钥等。

作为快捷方式,我在这里找到并安装了一个分布式 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 模型、视图和模板正常工作,并且我编写了所有前端脚本来解析和显示来自亚马逊产品广告 API 的 XML 结果。Python 包似乎拥有我所需要的一切。但现在我只需要弄清楚如何利用包的能力来创建签名请求、调用 Amazon 的 RESTful 服务并解析生成的 XML。

4

1 回答 1

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_APPSsettings.py,以便 Django 执行应用程序需要完成的工作(生成表models.py例如)。

关于您的问题,该amazonproduct包确实是 Python 包,但不是 Django 应用程序 - 它没有任何views.pynor models.py. 它只是一个 python 包,提供了一个友好的界面来查询亚马逊的数据。这意味着您不必将其附加到您的INSTALLED_APPS. 你想要用它做的就是在你的代码中任何你需要它的地方导入它。我认为可能views.py在您通常处理应用程序逻辑的地方。

恢复:无论您需要在哪里访问包中的方法、类或函数,您amazonproduct只需正常导入它(如您在答案中所述),然后实例化对象或正常调用您需要的方法。在您正在处理的文件中传递您收集的数据。

希望这能给你一些启发。如果您对 Python 的包和模块有任何其他疑问,请参阅此文档会话,文档非常完整。

于 2013-05-12T23:16:55.850 回答