我目前正在编写django项目,当涉及到应用程序的分离时,我感到很困惑。项目由文章和类别组成,它们保存在一个应用程序中,还有一个“主”应用程序,它处理用户配置文件视图、登录、注销和注册。现在我正在尝试实现用户对用户的消息,我想知道它是否应该作为单独的应用程序保存。
如果消息模型保存在应用程序的“消息”中,如何实现show_messages视图?
1)似乎应该将其存储在“main”应用程序中,因为它是通过my_profile视图链接的。它只需要获取所有消息实例,形成“messages”应用程序,并呈现扩展profile.html的模板,或者从“messages”应用程序中包含只负责消息列表的部分模板。但是,为什么我需要单独的应用程序才能在那里保存一个带有一些助手函数的模型呢?
第二,我想知道在“messages”应用程序中放置show_messages视图,但是我需要使用模板,它扩展了其他应用程序中的模板,这似乎再次违反了自我包容规则。另外,所有的"accounts/“urls目前都保存在main.urls中,所以我觉得在messages.url中添加”adding /profile/messages“规则是错误的。
3)最后,我考虑将带有所有帮助程序和模板的消息模型移动到“main”应用程序,因为消息是设计用来处理用户模型和视图的,因此强制进行额外的分离似乎毫无用处。
谢谢你阅读我的想法,我会感激所有的线索和解释。
发布于 2014-05-12 16:58:24
当我第一次开始使用Django时,我发现关于这个问题的答案是非常有帮助的,关于应用程序/项目布局:Projects vs Apps
许多答案是有用的,但这个答案特别简洁:
试着回答以下问题:“我的申请是做什么的?”如果你不能用一个句子回答,那么也许你可以用更清晰的逻辑把它分割成几个应用程序?在我开始和django一起工作后不久,我就读到了这个想法,我发现我经常问这个问题,这对我很有帮助。 你的应用程序不必是可重用的,它们可以相互依赖,但它们应该做一件事。
应用程序的相互依赖并不总是有问题的。例如,在我的许多项目中,我有一个单独的应用程序,它只用于创建动态菜单。为了正常工作,我需要将该站点的特定型号导入到该应用程序中--所以我不能将其放入另一个站点,不受更改,并期望它能够正常工作。尽管如此,应用程序中的其他90%的代码是完全可重用的,如果相关代码已经分解成一个单独的应用程序,那么我更容易将相关代码转移到一个新的项目中--尽管该应用程序只包含一个模板和一个模板。
最终,django站点在一个庞大的、笨重的应用程序中可以正常运行所有的模型/视图/等等。但是,通过将您的项目分解为“此应用程序执行此特定功能”,您可能会使您的代码管理更加容易。
对于2中的“url”点,没有理由不使用子空间url。您已经在django项目中这样做了--很可能您的主urls.py有一个包含()到另一个应用程序,比如您的main.urls。您的main.urls没有理由不能在您的消息应用程序中也包含()。
https://stackoverflow.com/questions/23600245
复制相似问题