Python 在何处调用依赖于模型的外部API?

Python 在何处调用依赖于模型的外部API?,python,django,web-services,Python,Django,Web Services,假设我有一个名为blog的Django应用程序 有一个名为Post的模型,我有一个外部API调用,返回给定时间内最流行的帖子列表,例如Google Analytics API 我的问题是:我应该在哪里放置调用外部API的代码,解析每个帖子的id,查询数据库并相应地对模型列表进行排序 我不认为它应该存在于Manager或templatetag中。有什么建议吗 提前谢谢 编辑:在整个项目的多个地方可能需要所需的结果,因此如果我在视图中放置代码,我将有重复。这听起来像应该在视图中完成,因为这样您将返回

假设我有一个名为blog的Django应用程序

有一个名为Post的模型,我有一个外部API调用,返回给定时间内最流行的帖子列表,例如Google Analytics API

我的问题是:我应该在哪里放置调用外部API的代码,解析每个帖子的id,查询数据库并相应地对模型列表进行排序

我不认为它应该存在于Manager或templatetag中。有什么建议吗

提前谢谢


编辑:在整个项目的多个地方可能需要所需的结果,因此如果我在视图中放置代码,我将有重复。

这听起来像应该在视图中完成,因为这样您将返回到一个包含所有所需上下文的模板。

这听起来像应该在视图中完成,因为这样您将返回到包含所有必需上下文的模板。

应该在视图中完成,或者更好,如果视图代码变得混乱,请将其放在帮助器模块中

import util
def view(request):
    util.process_post_rankings(request.user.id)
    # ... write additional logic and render to template

但是,请谨慎使用外部API向用户呈现页面。事情可能会出错,需要花费大量时间,API可能无法响应等等。。。最好使用Javascript异步执行此操作,并在数据准备就绪时更新页面。

应在视图中完成此操作,或者,如果视图代码变得混乱,最好将其放在帮助器模块中

import util
def view(request):
    util.process_post_rankings(request.user.id)
    # ... write additional logic and render to template

但是,请谨慎使用外部API向用户呈现页面。事情可能会出错,需要花费大量时间,API可能无法响应等等。。。最好使用Javascript异步执行此操作,并在数据准备就绪时更新页面。

谢谢Rasiel。我澄清了这个问题,因为我应该提到,我可能会在整个项目中的多个地方使用该有序帖子列表。太好了,似乎helper方法就是答案。谢谢Rasiel。我澄清了这个问题,正如我应该提到的,我可能会在整个项目的多个地方使用该有序帖子列表。太好了,似乎helper方法就是答案。谢谢,Tommy。助手模块的建议是伟大的!谢谢,汤米。助手模块的建议是伟大的!