首页 > 解决方案 > Django 结构:许多应用程序 VS 一个大型应用程序

问题描述

我希望这不是一个基于意见的问题,而更像是一个复杂的 django 网站的解决方案。仅供参考,我是 django 的初学者。

首先,我正在做一个复杂的会计 django 网站,其中有以下功能:

有关于“许多应用程序与 1 个大型应用程序”的文章和 SO 的答案。我的困惑开始了。我发现 django 允许使用init .py 导入将 views.py 和 models.py 分离到 app/views 和 app/models 中的多个文件中。

我个人不喜欢大的应用程序文件,因为它很难找到东西。我更喜欢整洁的结构。但混乱不断袭来。我想做一件事并把它做好,但似乎拥有一个大型应用程序更有意义,因为所有提到的功能都依赖于 ForeignKey。

所以,根据你的经验。您理想的文件夹结构和解决方案是什么?

如果您可以提供性能差异,那将很有帮助。

更新: 由于大多数人都说多应用程序,我对此有最后一个问题。由于 Django 应用程序可以有 models/ 和 views/ 文件夹,其中包含多个 models.py 和 views.py,这意味着一个大型应用程序可以在一个 views/ 文件夹中分离成多个视图文件。对此你们怎么看?因为这会将所有迁移都放在一个地方,它是否在跨应用程序的外键等杂乱事物方面提供长期安全性。

标签: pythondjangodjango-2.1

解决方案


这种问题我很久以前在不同的平台上问过。常见的答案是

如果你想重用它,然后创建一个应用程序,或者如果你不想要,那么你不需要制作一个单独的应用程序

让我给你举个例子。如果您的项目具有以下功能

  • 共享图像
  • 分享文字
  • 评论媒体和文字
  • 赞成和反对选项

在这里,用户可以共享图像或文本,其他人可以对其发表评论或赞成/反对。在这种情况下,如果您将 Comment 设为单独的应用程序并将 Upvote/Downvote 设为单独的应用程序,那么将来如果您必须添加 Video 以及 Image 和 Text,那么您只需将 Video 链接到 Comment 应用程序和 Upvote/Downvote 应用程序,即与包含所有内容的大型应用程序相比,任务将更少。您也可以相应地管理您的数据库。

在您的情况下,您可以制作(例如),

  • 自定义用户(帮助您将来添加额外的权限)
  • 产品类别(帮助您添加更多类别或子类别)
  • 产品或销售等

对于许多管理员来说,当您将这些应用程序添加到您的 settings.py 中,并且如果您在每个应用程序中分别编辑 admin.py 时,所有内容都会出现在您的管理面板中,没有任何麻烦。

对于许多视图,您可以将所有模型导入任何应用程序的 views.py 或在其应用程序中单独使用。它不会引起任何问题。同样适用于 urls.py 和 forms.py 等。


推荐阅读