我有一个django应用程序,一个存储用户通过Web界面输入的数据的模型。
在查看/保存模型实例时,我需要使用第三方REST API。我知道如何做到这一点但是,我不确定这个代码应该与django应用程序一起使用。
我的直觉是将此代码放在模型类中,但是你也可以使用视图......我只是不确定。
以前如何做到这一点,有很多帖子询问如何做到这一点,但没有一个帖子说明放置代码的最佳位置。
感谢任何指导。
干杯
答案 0 :(得分:3)
这是一个主观问题,所以这是一个主观的答案。
首先,确保与此外部REST API交互的任何代码都驻留在单独的模块中。例如,如果您从字典API中获取单词定义,那么与此API对话的所有代码最好都在一个单独的dictionary
模块中,然后您可以将其导入到视图中。
其次,您的models.py
应该只声明您的应用程序的数据模型并定义此模型上的操作,而不是其他。它们不应该关注请求/响应周期,读取文件,呈现模板,进行HTTP调用或其他任何事情。通过这种逻辑,您应该从视图中进行这些REST API调用,并在需要时将返回的数据传递到模型中。
最后,请三思而后行从Django应用程序进行REST调用。 Python默认执行同步(阻塞)I / O,这意味着只要应用程序等待REST调用完成,它就无法为任何传入的HTTP请求提供服务。如果您没有太多用户,这不是问题,但对于需要扩展的应用程序,请注意这一点。您可能希望查看Python的异步I / O库。