在使用ruby on rails开发web应用程序几年后,我决定给予Django一个尝试,然而似乎我缺少了一些东西,那就是如何构建大型项目,或者一般的任何项目。
例如,在rails中,我们有一个models文件夹,其中包含model类,每个类都在一个单独的ruby文件中;还有一个controllers文件夹,其中包含controller类,每个类都在一个单独的ruby文件中。
然而,在Django中,它将项目拆分为独立的应用程序,这些应用程序可以独立安装在其他Django项目中,每个应用程序都有一models.py包含所有模型类的www.example.com文件,一views.py包含所有视图函数的www.example.com文件。
但是如何在Rails这样的视图中对函数进行分组呢?也就是说每个模型一个控制器。
一般来说,当我的项目包含一个大型应用程序,而该应用程序又不能被分割成多个独立的应用程序时,该如何构建?例如,我希望每个模型都有一个视图索引函数,但如果所有函数都在一个文件中,该如何构建呢?
例如,如果我的项目是关于销售汽车的。我应该有Map到/cars的索引函数,另一个Map到/users的索引函数,等等...
我在网上搜索了一下,但没有找到合适的答案。
我还不清楚如何构建Django应用程序,所以任何帮助都将不胜感激。
2条答案
按热度按时间mw3dktmi1#
正如在@shanksfk的回答中提到的,Django在文件夹安排上非常灵活,你不必遵循默认的应用结构。当我创建一个纯后端Django项目(使用DRF)时,我通常有3个基础应用:
当我展开的时候,我可以添加一个文件夹,专门存放helpers,utils,可能还有外部服务的抽象层。我推荐阅读更多关于域驱动设计的内容,以了解如何构建你的项目。你也可以从其他Django项目中寻找灵感:
5vf7fwbs2#
简而言之,Django是一个模型-视图-模板框架,Rails是一个模型-视图-控制器框架。
在Django中,我们在www.example.com中views.py为每个指定的应用程序存储控制器,而在MVC框架(如Rails)中,我们将其存储在控制器中。在Django中,您还必须单独创建自己的HTML模板,有些人可能会觉得这很乏味,但由于这种分离,它更容易与其他框架(如Vue或React)一起工作。
这是我在网上找到的一般比较。
不过,要回答你关于文件夹结构的问题。基本上Django在文件夹的安排上是非常灵活的,这真的取决于你想如何设计项目结构。通常我会把每个应用程序都放在主文件夹(项目文件夹)中。这样你就不会弄乱venv的设置了