Django - 什么构成应用程序?

时间:2016-03-01 19:13:33

标签: python django

我构建了一个包含多个模型的Django应用程序(5-10)。将有一个管理员端,最终用户管理数据,然后是用户端,其他最终用户只能读取数据。我理解Django应用程序的目的是鼓励模块化,但我不确定"在哪里绘制线条"可以这么说。

最佳实践条款":每个模型(或非常相关的模型组)是否都有自己的应用程序?应该有一个' admin' app,然后是'前端'应用程序吗?

在任何一种情况下,其他应用如何在其他应用中检索和使用模型/数据?

2 个答案:

答案 0 :(得分:3)

应用是逻辑分隔符。例如,如果您的网站包含博客,民意调查和Feed,则可能包含博客,投票和Feed应用。每个应用程序可能有多个模型(例如博客和博客模型),但可以通过功能相互分离。

如果您不愿意,您不必将内容分成不同的应用程序。将内容拆分成应用确实对过度拥挤有很大帮助。如果你认为你会超过10个模型,你可能会考虑在它变得太难之前分裂(django真的不喜欢你在应用程序之间移动东西)。

至于从其他应用程序访问内容,每个应用程序都是一个模块,所以你所做的只是

from app1.models import App1Model

你已经准备好了。

答案 1 :(得分:1)

Python \ Django是模块化的。

  1. 应用程序应该只包括那些通常可以解决1个具体任务的模型。
  2. 如果p.1中的某些模型在其他任务中有用,那么为这些模型创建新的应用程序可能会更好。也就是说,如果在多个任务之间共享某些模型,则可以使用这些模型制作新应用程序。
  3. 例如,您有一个论坛应用。这个论坛有这样的功能,如民意调查,注册,PM等。逻辑上一切似乎都结合在一起。但是,如果您的网站只是一个论坛 - 好的,但如果有其他内容,例如带有评论的博客,那么“注册模型”可以作为单独的应用程序制作,并且可以在网站的某些部分之间共享,例如“博客与评论“和”论坛“。

    关于admin \ frontend。我见过有超过10个模型的apps \ projects。根据上面的论坛示例,如果管理员部分没有在您的应用程序范围之外执行任何任务,那么我会在一个应用程序内部创建管理员和前端。否则,如果admin与另一个任务有任何关系,这超出了您的主应用程序的范围 - 管理员应该是一个单独的应用程序。