在哪里调用依赖于模型的外部API?
假设我有一个叫“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异步处理,也就是先让页面加载,然后等数据准备好了再更新页面。