假设我有一个名为“blog”的Django应用程序。
有一个名为Post
的模型,我有一个外部API调用,可以返回给定时间内最受欢迎的帖子列表,例如Google AnalyticsAPI。
我的问题是:我应该在哪里放置调用外部API的代码,从每个帖子中解析id,查询数据库并相应地对模型列表进行排序?
我认为它不应该存在于Manager
或templatetag
中。有任何提示或建议吗?
提前致谢!
编辑:项目中的几个地方可能需要所需的结果,所以如果我将代码放在视图中,我就会有重复。
答案 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中完成,因为那时你将返回一个包含所有必需上下文的模板。