当前位置: 首页 > 知识库问答 >
问题:

java - Python会使用分层么?

单嘉泽
2024-05-15

最近在学Python, 看到Django 网上开源的很多项目都是在views函数里面写满逻辑代码,这相当于Java里面controller写业务代码一样,是大家都这样,还是只有我看到的这样,实际python写项目的时候要不要分层?

共有3个答案

颛孙兴旺
2024-05-15

这只是一种设计模式,Django遵循的是MVT模式,即Model(数据库),View(视图层),T(模板层),而且每一个app下面都是这种设计。主打的就是归类,业务是业务,数据层是数据层,路由是路由等等。

实际当中,像django这样的,因为你一开始创建项目的时候,django就会自动给你分配好了各个文件:

...models.pyviews.pyurls.py...

等等,所以你就按照这么写就行。其他框架,比如fastapi,如果接口很少,什么都少,一个main.py 就可以包揽所有。如果东西偏多,就按接口属性归类分不同的app名称作为目录,每个app下再有对应的负责数据库的、路由的、业务的等等。

设计模式的出现不是强迫你去使用,而是基于前人积累的经验,在大型项目上,这种写法往往好维护、好梳理、条理清晰。如果等到你一个项目越来越庞大的时候,你也可能会想想如何去设计代码结构,因为如果靠一个文件大包大揽,你也会头疼的对吧。

毕竟代码只要能跑起来实现需求就行,你如果不想按照这些方式来,也完全没有问题。

小牛23077
2024-05-15

你应该是说 mvc 结构吧, 这个一般根据项目来,如果项目复杂程度比较高,还是区分开来,易维护,易扩展,如果身逻辑不复杂,就没必要那么麻烦,增加自己的代码量

钦耀
2024-05-15

Python 本身并不强制要求分层,但分层是一种良好的软件设计原则,有助于保持代码的清晰、可维护和可扩展。在 Python 项目中,特别是在使用 Django 这样的 web 框架时,是否进行分层很大程度上取决于项目的规模、团队的偏好以及项目的具体需求。

对于小型项目或原型开发,有时在 views 函数中直接编写逻辑代码是可行的,因为这能快速地实现功能并减少不必要的抽象和复杂性。然而,对于大型或复杂项目,这种做法可能导致代码结构混乱、难以维护,并且不利于团队协作。

在 Python 项目中,常见的分层方式包括:

  1. MVC(Model-View-Controller)或 MVT(Model-View-Template)模式:这是 Django 框架默认采用的一种设计模式。其中,Model 负责数据处理,View 负责业务逻辑和数据处理逻辑,Template 负责页面渲染。虽然 Django 的 views 函数通常包含业务逻辑,但也可以通过进一步抽象和封装来保持代码的清晰和可维护性。
  2. 服务层(Service Layer):在大型项目中,可以引入服务层来封装复杂的业务逻辑。服务层通常位于 Model 和 View 之间,负责处理与业务相关的逻辑,而 View 则专注于处理用户请求和响应。
  3. 领域驱动设计(Domain-Driven Design, DDD):对于非常复杂的项目,可以采用 DDD 来进一步细化代码结构。DDD 强调将业务领域概念映射到代码结构中,通过实体、值对象、聚合根、领域服务等概念来组织代码。

总之,是否进行分层取决于项目的具体需求和团队的偏好。在 Python 项目中,通过合理的分层和抽象,可以提高代码的可读性、可维护性和可扩展性。

 类似资料:
  • 问题内容: 我对用Java创建分层的tif感兴趣,以使Photoshop能够识别这些层。我能够创建多页tif,但是Photoshop无法将页面识别为图层。尽管可以使用Acrobat查看页面。有人知道Photoshop如何存储tif图层数据以及如何用Java生成吗? 谢谢。 问题答案: 我已经为TIFF ImageIO插件进行了研究,据我了解,Photoshop在TIFF中存储图层信息的方式是完全专

  • 主要内容:创建分层索引,应用分层索引,分层索引切片取值,聚合函数应用,局部索引,行索引层转换为列索引,列索引实现分层,交换层和层排序分层索引(Multiple Index)是 Pandas 中非常重要的索引类型,它指的是在一个轴上拥有多个(即两个以上)索引层数,这使得我们可以用低维度的结构来处理更高维的数据。比如,当想要处理三维及以上的高维数据时,就需要用到分层索引。 分层索引的目的是用低维度的结构(Series 或者 DataFrame)更好地处理高维数据。通过分层索引,我们可以像处理二维数据

  • 我感兴趣的是用Java创建一个分层tif,使Photoshop能够识别层。我能够创建多页tif,但Photoshop无法将这些页面识别为层。不过,Acrobat可以查看这些页面。谁知道Photoshop是如何存储tif层数据的,以及如何用Java生成这些数据? 谢谢

  • 我想写一个rmi应用程序。 远程调用中的每个方法都会抛出一个远程调用。ILoby中的方法没有。 编译时会出现以下错误: JAVArmi。服务器ExportException:远程对象实现非法远程接口;嵌套异常是: 在类和远程接口之间有接口吗? Ahsous

  • 问题内容: 我已将我的应用程序部署到jar文件。当我需要将数据从一个资源文件复制到jar文件外部时,请执行以下代码: 我遇到的错误是:URI is not hierarchical。在IDE中运行时,我不会遇到此错误。 如果我将上述代码更改为对StackOverFlow上其他帖子的一些帮助,请执行以下操作: 问题答案: 你不能做这个 它不是文件!从ide运行时,不会有任何错误,因为你没有运行jar