我构建了一个包含多个模型的Django应用程序(5-10)。将有一个管理员端,最终用户管理数据,然后是用户端,其他最终用户只能读取数据。我理解Django应用程序的目的是鼓励模块化,但我不确定"在哪里绘制线条"可以这么说。
最佳实践条款":每个模型(或非常相关的模型组)是否都有自己的应用程序?应该有一个' admin' app,然后是'前端'应用程序吗?
在任何一种情况下,其他应用如何在其他应用中检索和使用模型/数据?
答案 0 :(得分:3)
应用是逻辑分隔符。例如,如果您的网站包含博客,民意调查和Feed,则可能包含博客,投票和Feed应用。每个应用程序可能有多个模型(例如博客和博客模型),但可以通过功能相互分离。
如果您不愿意,您不必将内容分成不同的应用程序。将内容拆分成应用确实对过度拥挤有很大帮助。如果你认为你会超过10个模型,你可能会考虑在它变得太难之前分裂(django真的不喜欢你在应用程序之间移动东西)。
至于从其他应用程序访问内容,每个应用程序都是一个模块,所以你所做的只是
from app1.models import App1Model
你已经准备好了。
答案 1 :(得分:1)
Python \ Django是模块化的。
例如,您有一个论坛应用。这个论坛有这样的功能,如民意调查,注册,PM等。逻辑上一切似乎都结合在一起。但是,如果您的网站只是一个论坛 - 好的,但如果有其他内容,例如带有评论的博客,那么“注册模型”可以作为单独的应用程序制作,并且可以在网站的某些部分之间共享,例如“博客与评论“和”论坛“。
关于admin \ frontend。我见过有超过10个模型的apps \ projects。根据上面的论坛示例,如果管理员部分没有在您的应用程序范围之外执行任何任务,那么我会在一个应用程序内部创建管理员和前端。否则,如果admin与另一个任务有任何关系,这超出了您的主应用程序的范围 - 管理员应该是一个单独的应用程序。