在哪里调用依赖于模型的外部API?

1 投票
2 回答
700 浏览
提问于 2025-04-16 08:47

假设我有一个叫“blog”的Django应用。

里面有一个模型叫做Post,我还需要调用一个外部的API,这个API会返回在某段时间内最受欢迎的帖子列表,比如说谷歌分析的API。

我的问题是:我应该把那段调用外部API的代码放在哪里比较合适?这段代码需要解析每个帖子的ID,然后查询数据库,并根据这些ID对模型列表进行排序。

我觉得这段代码不应该放在Manager或者templatetag里。你有什么建议吗?

提前谢谢你!

补充说明:我可能在项目的多个地方都需要这个结果,所以如果我把代码放在视图里,就会出现重复的情况。

2 个回答

1

这听起来应该在一个视图中完成,因为这样你就可以返回一个包含所有必要信息的模板。

4

这段话的意思是,最好把这些代码放在一个视图里。如果你的视图代码变得很乱,那就把它放到一个辅助模块里。

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

不过,要小心依赖外部的API来给用户展示页面。因为可能会出现问题,比如加载很慢,API可能没有响应等等……所以最好用JavaScript异步处理,也就是先让页面加载,然后等数据准备好了再更新页面。

撰写回答