您的位置:首页 > 编程语言 > Go语言

Django Class-based generic views 基于类的通用视图

2013-11-05 00:00 841 查看

Class-based generic views 基于类的通用视图

Ø 简介&对比

在django1.3之前视图是基于函数[function-based generic views]的方式来实现的。class-based views是django1.3的重要特性之一. 就是使用类的形式来描述view。 class-based views更加面向对象;使程序的变得简单清晰,并且易于扩展维护。可以将一些公用的东西抽象出来,供别的类继承使用,减少了大量的重复的单调的冗余的代码编写工作。总的来说,这些视图提供了一些简单的接口来完成开发者遇到的大多数的常见任务。

[b]function-based[/b]



class-based



Ø API




https://docs.djangoproject.com/en/1.5/ref/class-based-views/

在实现自己的可重用views时,可从下面的类继承;View中最重要的两个方法就是get和post, dispatch方法时实际调用post,get方法。

django自带的generic views

TemplateView渲染指定的模板

RedirectView重定向

DetailView 察看对象详细信息

ListView 显示对象列表

Editing views 实现编辑

FormView 显示Form

CreateView 创建对象

UpdateView 更新对象

DeleteView 删除对象

详细的类视图



Ø 使用

https://docs.djangoproject.com/en/1.5/topics/class-based-views/

两种方式:子类化 & URLconf 传参



直接传递新的属性到类本身调用 as_view方法中,修改类视图中少量简单的属性;


子类化一个类视图时,你可以重写一些属性(比如 “template_name” )或者一些方法(比如 “get_context_data”)。

模板和属性值作用及命名规则

“template_name” 告诉视图(view)使用哪个模板,缺乏template参数时django会根据Model对象的名字推断。

“context_object_name” 指定传递到模板数据的名字,默认为“object_list”



















以Book对象为例,这里明确指定了。

class BookFormListView(ListView):

model = Book

template_name = "book_list.html"

“model”参数指定了视图(view)在哪个数据库模型之上进行操作。

“queryset” 参数来指定一个对象列表,如果不够用也可以用“get_queryset()” 方法来供我们重写,们可以添加更多的逻辑。

“get_context_data()” 返回上下文数据显示对象的列表,可以重写它添加额外的上下文携带数据。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息