在何处调用依赖于Model的外部API?

时间:2010-12-20 16:10:49

标签: python django web-services

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

有一个名为Post的模型,我有一个外部API调用,可以返回给定时间内最受欢迎的帖子列表,例如Google AnalyticsAPI。

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

我认为它不应该存在于Managertemplatetag中。有任何提示或建议吗?

提前致谢!

编辑:项目中的几个地方可能需要所需的结果,所以如果我将代码放在视图中,我就会有重复。

2 个答案:

答案 0 :(得分:4)

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

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

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

答案 1 :(得分:1)

这听起来应该在View中完成,因为那时你将返回一个包含所有必需上下文的模板。