比较Django和ruby on rails的项目结构



经过几年使用ruby on rails开发web应用程序,我决定给Django一个尝试,但似乎我错过了一些东西,这是如何构建大型项目,或任何项目。

例如,在rails中,我们有一个包含模型类的models文件夹,每个模型类都在一个单独的ruby文件中;一个包含控制器类的controllers文件夹,每个控制器类都在一个单独的ruby文件中。

然而,在Django中,它将项目拆分为独立的应用程序,这些应用程序可以独立地安装在其他Django项目中,每个应用程序都有一个models.py文件,其中包含所有的models类,一个views.py文件包含所有的views函数。

但是如何在视图中分组功能,如rails?即每个模型一个控制器。

在一般情况下如何结构我的项目时,它包含一个大的应用程序,不能分成多个独立的应用程序?例如,我想有一个视图索引函数为每个模型,但如何做到这一点,如果所有的功能都在一个文件?

例如,如果我的项目是关于销售汽车。我应该有一个映射到/cars的索引函数,另一个映射到/users的索引函数,等等…

我在网上搜索,但找不到合适的答案。

这是不清楚我如何构建Django应用程序,所以任何帮助将不胜感激。

正如@shanksfk的回答中提到的,Django在文件夹安排方面非常灵活。你不必遵循默认的应用结构。当我创建一个纯后端Django项目时(使用DRF),我通常有3个基本应用程序:

  1. api -存储模块、序列化器和url的地方
  2. core -默认的应用程序(有你的Django项目的名字)
  3. db -存储模型的地方

然后,当我展开时,我可以添加一个专门用于帮助程序、utils和外部服务的抽象层的文件夹。我建议阅读更多关于领域驱动设计的内容,以了解如何构建您的项目。你也可以从其他Django项目中寻找灵感:

django CMS
  • Baserow
  • Django API domain

简而言之,Django是一个模型-视图-模板框架,Rails是一个模型-视图-控制器框架。

在Django中,我们为每个指定的应用程序在views.py中存储控制器(sort of),而在MVC框架(如Rails)中,我们将其存储在控制器中。在Django中,你还必须单独创建自己的HTML模板,有些人可能会觉得这很乏味,但由于这种分离,与其他框架(如Vue或React)一起工作更容易。

这是我在网上找到的一般比较。

但是,为了回答你关于文件夹结构的问题。基本上Django在文件夹安排上是非常灵活的,这取决于你想如何设计项目结构。通常我要做的是保持每个应用程序在主文件夹(项目文件夹)。这样你就不会弄乱venv设置

最新更新