gpt4 book ai didi

python - Django 中的类 View

转载 作者:IT老高 更新时间:2023-10-28 20:29:52 26 4
gpt4 key购买 nike

Django view 指向一个功能,如果您只想更改一点功能,这可能是一个问题。是的,我可以在函数中有数百万个关键字参数,甚至更多 if 语句,但我更多的是考虑面向对象的方法。

例如,我有一个显示用户的页面。此页面与显示组的页面非常相似,但与仅使用另一个数据模型相比仍然不太相似。组也有成员等...

一种方法是将 View 指向类方法,然后扩展该类。有没有人尝试过这种方法或有任何其他想法?

最佳答案

我创建并使用了我自己的通用 View 类,定义了 __call__ 以便类的实例是可调用的。我很喜欢;虽然 Django 的通用 View 允许通过关键字参数进行一些自定义,但 OO 通用 View (如果它们的行为被分成许多单独的方法)可以通过子类化进行更细粒度的自定义,这让我少重复自己。 (每当我需要调整 Django 的通用 View 所不允许的东西时,我都厌倦了重写相同的创建/更新 View 逻辑。

我在 djangosnippets.org 上发布了一些代码.

我看到的唯一真正的缺点是内部方法调用的激增,这可能会在一定程度上影响性能。我认为这不是什么大问题。 Python 代码执行很少会成为 Web 应用程序的性能瓶颈。

更新:Django 自己的 generic views现在是基于类的。

更新:FWIW,自从编写此答案以来,我已经改变了对基于类的 View 的看法。在几个项目中广泛使用它们之后,我觉得它们往往会导致编写令人满意的 DRY 代码,但以后很难阅读和维护,因为功能分布在许多不同的地方,并且子类是如此依赖关于父类(super class)和混入的每个实现细节。我现在觉得TemplateResponse而 View 装饰器是分解 View 代码的更好解决方案。

关于python - Django 中的类 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/742/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com