Django逻辑和放在哪里?

2024-04-26 01:39:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我不熟悉Django,但我最近创建了我的第一个应用程序。我想知道我是否把我的逻辑放错地方了。从Django的书中,我得到的逻辑应该只是放在模型中的视图和数据中。但是我最近读到视图应该尽可能小,让模型处理逻辑。我的问题是我的视图处理所有我的逻辑,而我的模型只处理进出数据库的数据。我是否在创建这个应用程序时弄错了,如果是,我将如何修复它?在


Tags: 数据django模型视图数据库应用程序地方逻辑
3条回答

Django的哲学/最佳实践鼓励“胖模型瘦控制器”(控制器是Django中的视图)。在尝试了这两种方法之后,使用“胖模特”的方法肯定效果更好。保持逻辑尽可能接近数据模型可以使其更具可重用性,而且Django中有许多特性可以更好地工作。在

一个例子是返回分页的列表视图。如果需要为查询集中的每个对象计算一些内容,可以

  • 在视图中循环进行计算
  • 或者您可以添加一个模型方法,然后在模板中的每次迭代中调用它。在

在视图中循环查询集将对整个查询集进行计算-如果只显示1000个列表中的10个对象,则不太好。在

从模板调用一个模型方法,计算将只在该页上的10个对象上完成。在

显然,您可以向视图中添加更多的代码,以便只对该页上的对象进行计算,但如果您选择其他路径,则不需要这些额外的代码。如果您需要在另一个页面上进行相同的计算,那么在模型方法中保留逻辑将是可重用的,无需任何更改,而您需要将其剪切并粘贴到视图中,或者创建一个新方法。虽然差别不大,但很多像这样的小事开始累积起来。在

不,你没有搞砸。你可以通过经验(多年的发展)找到你的解决方案。在

因此,使用胖模型和瘦视图,或者相反,这取决于您和您的应用程序需求。在

随着你的学习,你会发现新的技术和方法,这将帮助你扩展你的“逻辑”和你的应用程序实现。在

在乞求的时候你会犯错误,但没关系。我们需要他们成为更好的开发者,程序员等

所以我的建议是:保持冷静,学习(好的实践)!在

最好有“胖模特,瘦观点”。很多Django专家会给你这个建议。谷歌这个短语,你会发现一些资源是说“胖模型,瘦视图”,或“胖模型,瘦控制器”。顺便说一句,Django的创建者将控制器命名为视图,视图作为模板,这可能会在阅读有关MVC(Django中的MTV)的文章时引起一些误解。在

相关问题 更多 >