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()” 返回上下文数据显示对象的列表,可以重写它添加额外的上下文携带数据。
相关文章推荐
- windows+apache+mod_python配置django运行环境
- Python+Django在windows下的开发环境配置图解
- python Django模板的使用方法(图文)
- 使用python Django做网页
- 教你安装python Django(图文)
- BitNami DjangoStack for Mac os
- 在django中使用logging模块
- Nginx + Apache + Django/python + rockmongo/php ...
- slide-show image from MongoDB GridFS chunks @ D...
- Django Development
- Use jquery POST in django
- 统计文件中不小于某一长度的单词的个数(泛型算法实现)
- OpenSuse11.4+Apache+Django搭建Webserver
- django关于URL、Template、Model的一些高级应用
- 英雄所见略同
- Doing BDD with Behave on a Django project
- Django 开发中的最佳实践之一
- 关于haml与django中的circle tag
- 关于 Django中的nested form fields
- django在控制台模板使用报错