2

我有一个 django 应用程序,该模型存储用户通过 Web 界面输入的数据。

查看/保存模型实例时,我需要使用第三方 REST api。我知道该怎么做,但是我不确定这段代码应该与 django 应用程序一起放在哪里。

我的直觉是将这段代码放在模型类中,但是你也可以使用视图......我只是不确定。

以前是如何做到的,有很多帖子询问如何做到这一点,但没有一个说明放置代码的最佳位置。

任何指导将不胜感激。

干杯

4

1 回答 1

3

这是一个主观的问题,所以这里是一个主观的答案。

首先,确保与此外部 REST API 交互的任何代码都驻留在单独的模块中。例如,如果您从字典 API 中获取单词定义,那么与该 API 对话的所有代码理想情况下都应该位于一个单独的dictionary模块中,然后您可以将其导入到您的视图中。

其次,您models.py应该只声​​明您的应用程序的数据模型并定义此模型上的操作,其他的不多。他们不应该关心请求/响应周期、读取文件、渲染模板、进行 HTTP 调用或其他任何事情。按照这种逻辑,您应该从您的视图中进行这些 REST API 调用,并在需要时将返回的数据传递到您的模型中。

最后,请三思而后行从您的 Django 应用程序进行 REST 调用。Python 默认执行同步(阻塞)I/O,这意味着只要应用程序在等待 REST 调用完成,它就无法为任何传入的 HTTP 请求提供服务。如果您没有太多用户,这不是问题,但对于需要扩展的应用程序,请记住这一点。您可能想研究 Python 的异步 I/O 库。

于 2013-03-19T19:06:20.103 回答