在创建 Django 应用程序时,我总是使用 FBV(基于函数的视图),因为它非常容易处理。但是大多数开发人员表示,最好使用 CBV(基于类的视图),如果复杂的视图很难用 CBV 实现,则只使用 FBV。
为什么?使用 CBV 有哪些优势?
原文由 catherine 发布,翻译遵循 CC BY-SA 4.0 许可协议
在创建 Django 应用程序时,我总是使用 FBV(基于函数的视图),因为它非常容易处理。但是大多数开发人员表示,最好使用 CBV(基于类的视图),如果复杂的视图很难用 CBV 实现,则只使用 FBV。
为什么?使用 CBV 有哪些优势?
原文由 catherine 发布,翻译遵循 CC BY-SA 4.0 许可协议
当我开始使用 DJango 时,我从未使用过 CBV,因为它们的学习曲线和有点复杂的结构。快进两年多了,我只在少数几个地方使用 FBV。我确信代码会非常简单并且会保持简单。
CBV 和多重继承的主要好处是我可以完全避免编写信号、辅助方法和复制粘贴代码。特别是在应用程序做的不仅仅是基本的 CRUD 操作的情况下。具有多重继承的视图比具有信号和辅助方法的代码更容易调试,尤其是在它是未知代码库的情况下。
除了多重继承 CBV 之外,CBV 还提供不同的方法来执行分派、检索模板、处理不同的请求类型、传递模板上下文变量、验证表单等等。这些使代码模块化,因此可维护。
原文由 iankit 发布,翻译遵循 CC BY-SA 3.0 许可协议
4 回答4.4k 阅读✓ 已解决
4 回答3.8k 阅读✓ 已解决
1 回答3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
1 回答4.5k 阅读✓ 已解决
1 回答3.8k 阅读✓ 已解决
1 回答2.8k 阅读✓ 已解决
最显着的优点是继承。在大型项目中,您可能会有很多相似的视图。不必一次又一次地编写相同的代码,您可以简单地让您的视图从基础视图继承。
Django 还附带了一组通用视图类,可用于执行一些最常见的任务。例如,DetailView 类用于从您的模型之一传递单个对象,使用模板呈现它并返回 http 响应。你可以直接把它插入你的 url conf..
或者您可以使用自定义功能扩展它
现在您的模板将传递一组书籍对象以进行渲染。
一个不错的起点是阅读 文档(Django 4.0+)。
更新
ccbv.co.uk 拥有全面且易于使用的关于您已有的基于类的视图的信息。