今天的编码环境正在迅速变化。特别是随着人工智能技术的发展,我们编写代码的方式也发生了根本性的改变。像ChatGPT和Copilot这样的AI模型能够在短时间内"迅速"生成整洁的代码,这使得我们与过去那种完全依赖人类编写代码的时代截然不同。

这种变化向开发者提出了一个重要问题:

"在人工智能可以代替编写代码的时代,开发者是否真的有必要深入理解代码的内部工作原理呢?"

对此,我毫不犹豫地想要回答一个“是的”


为什么要深入理解? - 工程师的责任与人工智能的协作

1. 风险管理与责任

用人工智能生成的代码进行简单的复制粘贴可以快速完成项目,但从长远来看,这会带来相当大的风险。

  • 未知错误: 虽然人工智能建议的代码在表面上看起来很好,但在特定情况下可能会导致意想不到的错误。

  • 扩展性问题: 随着项目的增大,如果你对内部逻辑一无所知,使用的代码可能会成为绊脚石。

最终,解决这些问题的责任在于开发者自己。作为开发者,了解你所使用的工具和代码是如何运作的,并且能够快速诊断和解决出现的问题是至关重要的。

2. 作为真正的“工程师”的成长

即便在人工智能的时代,或者说正因为与人工智能共同工作,我们更需要深入理解代码。

  • 有效的沟通: 向 AI 提问时,能够准确描述问题的哪些部分,需要具体说明,这样才能获得更好的答案。

  • 主导设计: 如何组合框架或库,以及如何构建结构的能力仍然掌握在我们手中。

  • 提升技术洞察力: 理解内部工作原理后,可以产生“这个框架是这样运作的,那这个功能可以这样扩展”的结构性和创造性想法。

尤其在像Django这样的Web框架中,理解这些内容尤其重要。Django提供的多种功能,特别是类视图(CBV)提供了极大的方便性和扩展性,但如果对其内部结构知之甚少,随着项目的扩大可能会遇到很大的困难。

AI与开发者的协作


从FBV转向CBV的理由

FBV(函数基础视图)的简洁性

刚接触Django的人大多以FBV(函数基础视图)作为第一步。

  • 直观性: 接收request并返回response的结构很容易理解。

  • 快速原型开发: 通过简短的代码轻松构建界面,加快初期开发速度。

但是,随着项目的扩大,管理的 URL 和视图变得越来越多,仅用FBV将使代码管理变得复杂,同时重复的逻辑也会开始出现。这在维护和扩展性方面带来了相当大的负担。

CBV(类视图)的重用性与扩展性

CBV是将面向对象编程(OOP)的哲学应用到Django视图逻辑中的概念。

  • 重用性: 可以轻松分离视图逻辑为方法,创建继承结构或扩展。

  • 明确的结构: 根据请求(GET、POST等),不同的方法会自动被调用,使代码逻辑分明。

  • 维护便利: 共同功能放置在上级类中,具体页面(或视图)只需重载所需部分即可使用。

例如,假设我们需要创建多个相同形式的列表页面。在FBV中需要反复编写相同(或相似)的代码,但在CBV中只需继承基本类如ListView,只要改变模型或模板名称即可更简单地应用。这就是CBV的真正优势。

FBV vs CBV 流程图


掌握CBV的好处

  1. 代码的可读性和可维护性大幅提升。

  2. 项目规模的扩展后,也能够轻松实现共同功能的模块化和扩展。

  3. 可以利用Django基本提供的多种CBV类(ListView, DetailView, CreateView, UpdateView, DeleteView等)快速构建CRUD。

  4. 开发者能够更主导地协作。人工智能生成的代码也能精准掌握要继承哪个CBV,细节得以细致地控制。


CBV探索系列的目标

在这个博客系列中,我们将逐一探讨Django的各种CBV。我们会具体讨论每个CBV在何种情况下最有效,以及如何自定义使用。

通过这个过程,我们期待达到以下成就:

  • 理解代码的工作原理: 不再只是复制和粘贴AI生成的代码,而是拥有“为什么要这样写”的自我说明能力。

  • 掌握CBV的作用和用法: 一旦掌握Django提供的多种CBV的特性,便能选择合适的视图。“在这种情况下,FormView最合适。”

  • 高效而主导的AI协作: 当你在AI建议的代码中产生“哪个部分需要调整”的洞见时,你将能够更有效地指导AI,提高生产力。


即将探讨的内容预览

  1. 了解Django的基本视图类

    • 我们将学习View类的结构,以及Django如何在请求-响应过程中调用它。
  2. 使用FormView轻松处理表单

    • 我们将探讨如何利用FormView处理用户输入(表单)。

    • 学习表单验证、错误消息处理、成功后重定向等的模式。

  3. ListView与DetailView的用法

    • 我们将讨论如何高效组装ListViewDetailView来构建列表页面和详细页面。

    • 结合实际项目示例,分享处理模板上下文数据的技巧。

  4. 轻松处理CRUD的CreateView、UpdateView、DeleteView

    • 我们将探讨几乎可以自动化CRUD(创建、读取、更新、删除)操作的视图类。

    • 对于“我应该亲自编写模型表单,还是使用CBV的功能?”的人来说将有很大帮助。

  5. 使用TemplateView高效渲染模板

    • 了解怎样利用TemplateView进行简单页面渲染。

    • 在仅需快速渲染HTML模板的场景下,构建结构的技巧建议。


总结:未来的旅程

在这一系列的讨论中,你将探索Django所提供的丰富CBV世界。如果你之前只使用过FBV,将会获得“原来CBV是这样的!”的新视野。如果你对CBV已有一定的经验,便可以共同探讨更深入的使用方法和扩展策略。

在人工智能时代,开发者需要专注的不仅仅是代码的编写,而是要理解代码是如何工作的原理并设计出更好的结构。Django的CBV是学习和实践这些内容的非常合适的主题。

接下来的文章将从Django的基本View类开始,逐步探讨基本框架并编写更坚固、更具扩展性的代码,成为“真正的工程师”。


推荐的资料

未来“CBV探索系列”的预告

  • 第2篇: “Django基本视图类的运行原理与生命周期”

  • 第3篇: “FormView: 干净的表单处理”

  • 第4篇: “ListView & DetailView: 实现数据列表与详细视图”

  • ...(继续)

感谢各位读者耐心读完这篇文章。期待接下来的系列内容,如果有任何问题或想分享的想法,请随时留言!

“即便在人工智能生成代码的时代,我们的工程感知和洞察将比以往任何时候更加闪耀。”