创建django应用程序时,我总是使用FBV(基于函数的视图),因为它非常易于处理。但是大多数开发人员表示,最好使用CBV(基于类的视图),而仅使用FBV,如果使用CBV很难实现复杂的视图。
为什么?使用CBV有什么优势?
创建django应用程序时,我总是使用FBV(基于函数的视图),因为它非常易于处理。但是大多数开发人员表示,最好使用CBV(基于类的视图),而仅使用FBV,如果使用CBV很难实现复杂的视图。
为什么?使用CBV有什么优势?
Answers:
最重要的优点是继承。在大型项目中,您可能会有很多相似的视图。不必一次又一次地编写相同的代码,只需让视图从基本视图继承即可。
django还附带了一组通用视图类,这些类可用于执行一些最常见的任务。例如,DetailView类用于从您的模型之一传递单个对象,使用模板进行渲染并返回http响应。您可以将其直接插入您的url conf ..
url(r'^author/(?P<pk>\d+)/$', DetailView.as_view(model=Author)),
或者您可以通过自定义功能对其进行扩展
class SpecialDetailView(DetailView):
model = Author
def get_context_data(self, *args, **kwargs):
context = super(SpecialDetailView, self).get_context_data(*args, **kwargs)
context['books'] = Book.objects.filter(popular=True)
return context
现在,您的模板将传递一个书本对象集合以进行渲染。
从这里开始的一个不错的地方是对文档有很好的阅读。
更新资料
ccbv.co.uk拥有关于您已经可以使用的基于类的视图的全面且易于使用的信息。
如果您想在Django应用程序中实现功能齐全的CRUD操作,则基于类的视图非常好,并且使用基于函数的视图来实现该功能将花费很少的时间和精力。
当您不打算在站点/应用程序上实现任何CRUD时,我建议您使用基于函数的视图,这意味着您的意图是简单地呈现模板。
我使用实时的基于类的视图创建了一个简单的基于CRUD的应用程序。访问http://filtron.pythonanywhere.com/view/(将/现在将无法使用)并享受。然后,您将了解它的重要性。