将Django应用程序(社交网络)分解为Django Frontend和RESTfull API



我正在编写Django应用程序(社交网络),并考虑将整体项目分为两个项目:UI和API。例如,Django 将仅用于渲染页面,与 API 交互并从中获取数据,编写在 web.py 上。

优点如下:

  1. 我可以独立开发和测试 API。
  2. 将来,可能会出现其他UI(例如移动),它将需要服务。
  3. 我计划外包Web UI开发,因此,如果我的应用程序将有两个模块,我可以只提供外部UI一个,而不是共享应用程序的逻辑。

缺点如下:

  1. 我一个人工作,开发两个项目更难,然后是一个。
  2. 我将无法使用很酷的 Django 管理面板。我需要自己写。
  3. 与 Django 相比,web.py 更底层。

这就像一个大脑转储,但如果您分享您在使用 UI 模块和独立 API 模块创建 Web 应用程序的经验,我将不胜感激。

更新(更具体的问题,正如迈克问的那样)

您将使用什么Python框架来创建社交网络的REST API,可以被不同的客户端应用程序使用?使用仅返回 JSON 并由 Django for Web 渲染它的 web.py 是个好主意吗?

谢谢鲍里斯。

我遇到过和你类似的情况。我最终用 Django 编写了 UI 和 API 部分。目前,我正在为同一个流程/项目提供服务。你提到你希望能够外包UI开发,但请听我说。

与此同时,我使用 django-piston 来实现 RESTful 前端,但做了一些准备:

  1. 将所有数据库和ORM访问封装到一个库中。您可以针对整个项目执行此操作,也可以逐个应用程序执行此操作。该库不仅是数据库访问的低级包装器,还可以用于更高级别的"问题",例如"all_comments_posted_by_friends()"之类的。这完成了两件事:
    1. 您可以从 UI 视图和 API 视图调用预制查询,而无需在多个位置重新实现它们。
    2. 如果您
    3. 想要使用 NoSQL 数据库(例如,其他分布式存储模型),稍后将能够替换一些(如果不是全部)底层数据库逻辑。您可以提前设置整个应用程序,而不必在开始时担心复杂的细节。
  2. API 的身份验证
  3. 层能够接受基于 HMAC/令牌的标头,以进行编程访问和正常的 Django 身份验证。我设置视图的方式是,它们将为编程客户端呈现纯 JSON(基于内容类型),并且如果由人类从浏览器浏览,则会在 HTML 中呈现数据结构(带有可单击的链接和可单击的文档字符串)。这使得 API 可以完全由人类探索和点击,而无需阅读任何文档,同时客户端只需通过 JSON 即可轻松处理它。

实际上,我构建的数据库层充当内部 API。如果您愿意,可以从多个应用程序、多个进程中使用相同的数据库层。UI 视图和 REST 视图都是在 Django 中实现的。它们可以位于同一进程中,也可以位于不同的进程中(只要它们现在可以访问同一数据库)。

最新更新