我有一个Django Web前端,它使用来自REST API后端的数据。 甚至用户也是在后端制作和创建的。
我的问题:
如何处理这个问题?
更新
在这种情况下,DRY 校长似乎失败了。
答案 0 :(得分:0)
自从这个问题最初发布以来,情况可能已经发生了变化。现在,StackOverflow上有关于此主题的一些有趣的相关问题。
要按照in this answer解释自己编写解决方案,您可以创建一个外部服务层(又名services.py
)并在那里写入访问外部资源的逻辑。您的视图将使用此图层,并执行适当的操作。还有其他一些问题可以帮助您了解如何将django-view收到的原始请求中的信息传递给外部服务,例如this或this
还有一个django应用程序,正如in this answer所解释的那样考虑了这种情况。 django-roa使用Resource Oriented Architecture范例来解决此问题。
答案 1 :(得分:-2)
我在新的电子商务项目中遇到了类似的障碍。 该项目是成熟的商店管理软件(CMS + ERP + CRM)的前端。它需要使用主产品数据库,但有自己的产品评论,评级等条目。
最初的想法是制作master数据库的缓存副本。该网站将受益于缓存项目的快速加载时间,但实施并非易事。
经过一些考虑后,所选择的方法是从管理程序更新网站的数据库。这样,网站的副本将始终是正确的,并且大多数实现不需要担心REST服务(它仍将用于用户注册,货件跟踪等。)
在您的情况下,如果您无法让服务远程更新您自己的数据库,您需要提供一种机制,允许您像常规模型一样引用REST资源,并在后台缓存它们。 / p>
重要提示:研究确保缓存始终正确(非脏)的方法......
答案 2 :(得分:-3)
我不确定我完全理解你的问题或要求。我正在阅读它的方式,你有一个主要的后端,基本上是一个黑盒子,你想在你的项目中使用一些使用Django ORM的第三方应用程序。
我不清楚为什么需要能够在两个数据存储之间进行双向同步。项目的用户将从主后端和项目的ORM中返回数据。
由于您担心在主后端中保存“ORM”数据,因此您可能会考虑创建一个事务中间件,可以随时触发ORM数据更新,这可以序列化正在保存的结构并将其传输到你的REST API。我认为,这个REST API能够接受任意数据结构吗?
您可能至少想要使用某些形式的middleware,也许还有一个实用程序模块/类来帮助形成“桥梁”。