【问题标题】:Django project applications divisionDjango项目应用事业部
【发布时间】:2014-06-29 07:07:37
【问题描述】:

我目前正在编写 django 项目,在分离到应用程序时感到困惑。项目由保存在一个应用程序中的帖子和类别组成,还有一个“主”应用程序可以处理用户个人资料查看、登录、注销和注册。现在我正在尝试实现用户对用户的消息,我想知道它是否应该作为单独的应用程序保存。

如果消息模型保存在应用程序“消息”中,我如何实现 show_messages 视图?

1) 它似乎应该存储在“主”应用程序中,因为它是由 my_profile 视图链接的。它只会从“消息”应用程序中获取所有消息实例,并呈现扩展 profile.html 的模板,或者从“消息”应用程序中包含一个仅负责消息列表的部分模板。但是为什么我需要单独的应用程序来保存一个带有一些辅助函数的模型呢?

2) 其次,我想知道将 show_messages 视图放置在“消息”应用程序中,但是我需要使用从其他应用程序扩展模板的模板,这似乎又违反了自包含规则。此外,所有“accounts/”url 目前都保存在 main.urls 中,所以我觉得在 messages.url 中添加“accounts/profile/messages”规则是错误的。

3) 最后,我考虑将带有所有帮助程序和模板的消息模型移动到“主”应用程序,因为消息旨在与用户模型和视图一起使用,因此强制额外的分离似乎没有用。

感谢您阅读我的想法,我会感谢所有线索和解释。

【问题讨论】:

    标签: django


    【解决方案1】:

    当我第一次开始使用 Django 时,我发现这个 SO 问题的答案对应用程序/项目布局特别有帮助:Projects vs Apps

    很多答案都很有用,但这个特别精辟:

    尝试回答问题:“我的应用程序是做什么的?”。如果你不能单句回答,那么也许你可以把它拆分成几个逻辑更清晰的应用程序?

    在我开始使用 django 后不久,我在某个地方读到了这个想法,我发现我经常问自己这个问题,这对我很有帮助。

    您的应用不必是可重用的,它们可以相互依赖,但它们应该做一件事。

    应用程序的相互依赖并不总是有问题的。例如,在我的很多项目中,我都有一个单独的应用程序,它仅用于创建动态菜单。为了正常工作,我需要将该站点的特定模型导入到该应用程序中——所以我不能直接将它放到另一个站点中,原封不动,并期望它可以工作。尽管如此,该应用程序中其他 90% 的代码是完全可重用的,如果相关代码已经分拆到一个单独的应用程序中,我更容易将其移动到一个新项目中——即使该应用程序只包含一个模板标签和一个模板。

    最终,从技术上讲,一个 django 网站可以在一个大而笨重的应用程序中运行所有模型/视图/等。但是,通过将您的项目分解为“此应用执行此特定功能”,您可能会更轻松地管理您的代码。

    关于 2 中的“url”点,没有理由不使用子空间 URL。您已经在 django 项目中执行此操作 - 很可能您的主 urls.py 有一个 include() 到另一个应用程序,例如您的 main.urls。没有理由您的 main.urls 也不能在您的消息应用程序中包含 include()。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多