Web应用程序+移动应用程序Python / Django架构

时间:2014-11-07 11:47:11

标签: android python django architecture django-rest-framework

我正在开始一个新的项目,以便学习一些新技术,我对我应该使用的架构有几个疑问。我的想法是开发一个适用于网络和移动应用程序的应用程序(主要是Android应用程序),所以我认为我需要实现以下内容:

  • REST API服务(使用django-rest-framework)。
  • Web应用程序(使用django)。
  • Android应用

在研究了堆栈溢出和Internet之后,我发现了Web部件的3个主要“架构”(服务器渲染,客户端渲染和混合模型)。首先,我的想法是使用客户端呈现模型(对于Web客户端具有主干或角度)。但是,我已经看到混合模型是更好的选择。

所以这是我的疑惑: 1)我可以使用django进行服务器渲染Web应用程序页面吗? 2)Django Web应用程序“使用”API或API是否使用与django web相同的“库”实现? 3)可以/应该为Web客户端使用客户端框架(角度,主干)(服务器呈现)吗?

提前致谢,对我对django等的简短了解感到抱歉。这方面的项目就是为了这一点,以提高我对所有这些东西的了解。

1 个答案:

答案 0 :(得分:0)

我不使用Django,但我目前正在使用Angular和Flask作为我的REST后端。我认为如果您的应用程序受益于缓存呈现的内容,那么混合方法非常有用。一个例子就像博客网站,你可以存储Markdown但渲染HTML,因此内容基本上是不变的。如果这些内容在许多用户之间共享,那么在服务器上生成一次并将其提供给许多客户端是非常有益的。

但是,如果你的理由是因为移动设备相对不足,服务器端渲染会改善渲染时间,这不一定适用。提供JSON数据模型通常会减少网络流量(显然取决于浏览器缓存),这对移动客户端响应非常重要。

就我自己而言,我更喜欢在客户端上呈现并将服务器端呈现保留为一些非常小的模板。我发现这会产生一个更好的REST API,然后我可以使用它来提供外部开发人员访问或插入其他客户端UI。我的客户端代码位于Angular的客户端,我的REST接口很干净,安全性总是在我的脑海中最重要,因为我必须假设客户端代码可能具有敌意。

即使使用Angular,我也可以看到服务器端渲染的用途。对于相当静态的内容,生成此服务器端,缓存它,然后ngInclude它会很棒。