Python 在Django中查看VS应用程序?

Python 在Django中查看VS应用程序?,python,django,model-view-controller,Python,Django,Model View Controller,很抱歉问了这个愚蠢的问题,但我很困惑: 我读 Intermezzo:项目与应用程序 您可能想知道,为什么在Django 1.4中,startproject命令与先前存在的startapp命令一起添加。答案在于Django“项目”和Django“应用程序”之间的区别。简单地说,项目是一个完整的网站或应用程序。“app”是一个小型(希望是)自包含的Django应用程序,可以在任何Django项目中使用。如果您正在构建一个名为“超级博客”的博客应用程序,那么“超级博客”就是您的Django项目。如果“

很抱歉问了这个愚蠢的问题,但我很困惑:

我读

Intermezzo:项目与应用程序

您可能想知道,为什么在Django 1.4中,startproject命令与先前存在的startapp命令一起添加。答案在于Django“项目”和Django“应用程序”之间的区别。简单地说,项目是一个完整的网站或应用程序。“app”是一个小型(希望是)自包含的Django应用程序,可以在任何Django项目中使用。如果您正在构建一个名为“超级博客”的博客应用程序,那么“超级博客”就是您的Django项目。如果“超级博客”支持读者投票,“投票”将是“超级博客”使用的Django应用程序。这个想法是,你的民意调查应用程序应该在任何需要民意调查的Django项目中重用,而不仅仅是在“超级博客”中。项目是应用程序的集合,以及特定于项目的逻辑。一个应用程序可以用于多个项目

虽然你自然倾向于在你的“民意调查”应用程序中包含大量“超级博客”特定的代码和信息,但避免这样做有很多好处。基于松耦合原则,将应用程序作为独立实体编写可以防止项目中的设计决策和错误直接影响应用程序。这也意味着,如果你愿意,你可以将你的任何应用程序的开发转交给其他开发者,而不需要他们访问或更改你的主项目

就像软件开发中的许多事情一样,它在前期需要一点努力,但在后期会带来巨大的回报

然后,如果网站包含:上传、登录、注册、添加帖子

如果我遵循应用程序理念(而不是为每个控制器/视图使用文件),我是否会将它们拆分为项目?这代码还有什么复杂的地方吗


既然Django创建了
\uuuu init\uuuuu
文件,以便更容易导入
,那么使用其他
startapp
将其复杂化的主要想法是什么?在我在网上找到的教程中,所有这些教程都只制作了一次startapp,甚至是最完整的应用程序。

一个项目是由应用程序组成的。您可以使用一个应用程序来管理用户(登录、注册等)。另一个应用程序用于管理博客等

所有功能都应该是独立的,尽可能保持独立。这样,您就可以更改登录的功能,而不会使您的博客系统崩溃。每个自包含的功能都应该是一个应用程序(用户、投票、博客、评论等)

可能很难将它们完全隔离,这就是为什么您使用外部应用程序的原因,这些应用程序是为特定目的设计的,可以轻松插入到您的项目中。除非是绝对必要的(许可证、附加功能等),否则不要自己使用一个好的应用程序


每个应用程序使用一个用于URL的文件,另一个用于视图,另一个用于模型。Your views.py for users可以包含处理您所需的所有视图,Your models.py包含用户所需的所有模型,而url.py将所有内容绑定在一起。这是一个例子,说明了应用程序中的一切都应该如何工作。每个视图/控制器不需要1个文件,每个应用程序需要3-5个文件,但这些文件是保持模块化和结构化设计所必需的。

我不理解你的问题。你肯定不会每个视图都有一个文件,不管你是否将它们拆分为单独的应用程序。请解释你需要什么模型,我很乐意按照引用的源代码为你设计一个架构。这似乎是你在这里引用的好建议。这里可能有答案:Django项目vs应用程序[1]:问题在于在自己的项目中采用每个视图,因为这是我所理解的?但这甚至不是引用的文本所说的含糊不清的内容。一个项目是一个完整的网站;应用程序是一个单一的功能领域。它们都不是由单个视图组成的。那么为什么不在同一个文件中使用
类呢?因为它是一个
,所以下次可以在另一个项目中导入,不是吗?您使用的所有东西都是类…视图(这些实际上也可以是函数,但我更喜欢基于类的视图)、模型、测试等。您只需使用单个文件对类似的类进行分组。如果你还没有完成……那么做……这将帮助你理解这类概念。是的,但问题是我看到的所有django教程都只制作了一次应用程序,并将所有内容都放在那里!直到现在,我还不止一次看到有人制作
startapp
!如果您想在另一个项目中导入一些东西,您需要确保它与您不导出的代码完全隔离。你可以阅读其中的基本知识。但是一个普通的网站,比如:注册/登录/添加评论,就不需要那么多开销了?