【问题标题】:Class-based Views in DjangoDjango中基于类的视图
【发布时间】:2018-05-14 14:47:55
【问题描述】:

我想问你是否可以向我澄清一些事情。我正在设计一个由 Django 提供支持的网络应用程序,并且我也在学习 OOP。

从什么理解基于类的视图的主要目的是保持我的代码干燥。避免任何重复或冗余的代码。

我尝试过实现基于类的视图,但最后我总是把所有东西都扔到基于函数的视图中,因为所有的视图都是相当独特的。

当我查看视图时,我问自己:“您的代码是否在任何地方重复?”答案是否定的。

问题是:尽管使用基于分类的视图被认为是最佳编码实践,但它并不总是可行的。我说的对吗?

【问题讨论】:

    标签: django


    【解决方案1】:

    基于类的视图本质上并不比基于函数的视图好。在许多情况下,这是一个偏好问题。但是,随着您在 Django 中深入了解,您将看到您将使用的许多功能都在同一个视图中使用(例如,加载模板),您可能会发现修改或扩展现有的默认 CBV 更容易而不是每次都编写一个全新的函数。

    您的问题可能会以基于意见的方式结束,但我建议您将所拥有的内容提交给 Code Review Stack Exchange 并在那里获得一些反馈。

    https://simpleisbetterthancomplex.com/article/2017/03/21/class-based-views-vs-function-based-views.html

    【讨论】:

    • 是的……渲染语句是它们唯一的共同点。
    • 基于类的视图还可以让您覆盖许多支持它们的方法,例如 get_context_data、form_valid、get_success_url 等。起初它们可能看起来过于严格,但通过覆盖您需要的内容可以让他们做任何函数可以做的事情。
    • @Sam Bobel 说得好。因此,它要么创建你自己的函数来满足你的需要,仅此而已,或者使用一个内部带有一堆函数的类并覆盖需要覆盖的函数。什么泡菜。 (双关语)
    • 是的,或者覆盖该函数并调用 super 以获取默认值,然后在其上添加您自己的数据。我一直用 get_context_data 来做这件事。
    • 我也是从基于函数的视图开始的;他们绝对更容易把你的头缠住。我鼓励你挑战自己,在某个地方使用 CBV,只是为了学习。掌握两者并为特定目的选择您喜欢的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-16
    • 2014-02-21
    • 2011-11-15
    • 1970-01-01
    • 1970-01-01
    • 2022-10-06
    • 1970-01-01
    相关资源
    最近更新 更多