从Django视图导入分布式python包

时间:2013-05-12 23:00:52

标签: django macos python-2.7

我正在开发一个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。

1 个答案:

答案 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