Django的通用视图可以减少开发的单调性,它抽象出一些在视图开发中常用的代码和模式,这样就可以在无需编写大量代码的情况下,快速编写出常用的视图函数。下面将使用通用视图重写前面所写的代码。要使用通用视图,我们需要做几件事:

  1. 修改URLconf
  2. 编写基于通用视图的视图函数

1、修改URLconf

from django.conf.urls import patterns,urlfrom blog.views import *urlpatterns = patterns('',url(r'^$',IndexView.as_view(),name='index'),url(r'^edit/$',edit,name='edit'),url(r'^(?P<pk>\d+)/$',DetailView.as_view(),name='detail'),   //此处将id变成了pk
)

2、修改视图

from django.shortcuts import render,get_object_or_404,redirect
from blog.models import Blog,PostForm
from django.views import generic
import datetimeclass IndexView(generic.ListView):template_name='blog/index.html'context_object_name='blogs'def get_queryset(self):return Blog.objects.all()class DetailView(generic.DetailView):model=Blogtemplate_name='blog/detail.html'    def edit(request):if request.method=='POST':form=PostForm(request.POST)if form.is_valid():post=form.save(commit=False)post.user=request.userpost.created_time=datetime.datetime.now()post.published_time=datetime.datetime.now()post.save()return render(request,'blog/detail.html',{'blog':post})else:form=PostForm()return render(request,'blog/edit.html',{'form':form})

我们使用了两个通用视图:ListView和DetailView

ListView:显示对象列表

DetailView:显示一个对象的某个属性详细信息

如果在通用视图函数中,我们不指定template_name,那么Django将会默认寻找<app name>/<model name>_detail.html和<app name>/<model name>_list.html模板。

(三)通用视图(generic views)相关推荐

  1. 深入Django(1): 通用视图 (generic views)

    如果对Django的基础部分尚不熟悉,请参考<Django实战>系列. 内容提要 1. 回顾Django的视图函数(view function) 2. 在视图函数中使用模板 3. 简化视图 ...

  2. django.views.generic通用视图的CreateView, ListView, UpdateView, DetailView, DeleteView用法

    导入: from django.views.generic import CreateView, ListView, UpdateView, DetailView, DeleteView 入坑指南 用 ...

  3. Django基础三之视图函数

    Django基础三之视图函数 一 Django的视图函数view 一个视图函数(类),简称视图,是一个简单的Python 函数(类),它接受Web请求并且返回Web响应. 响应可以是一张网页的HTML ...

  4. Django 学习小组:基于类的通用视图详解(一)

    通过三周的时间我们开发了一个简单的个人 Blog,教程地址: 第一周:Django 学习小组:博客开发实战第一周教程 -- 编写博客的 Model 和首页面 第二周:Django 学习小组:博客开发实 ...

  5. Django 基于类的通用视图详解

    原文出处:https://segmentfault.com/a/1190000005685454 Django 学习小组:基于类的通用视图详解(一) 通过三周的时间我们开发了一个简单的个人 Blog, ...

  6. day 53-1 Django基础三之视图函数

    Django基础三之视图函数 本节目录 一 Django的视图函数view 二 CBV和FBV 三 使用Mixin 四 给视图加装饰器 五 Request对象 六 Response对象 一 Djang ...

  7. django 1.8 官方文档翻译: 3-4-2 基于类的内建通用视图

    基于类的内建通用视图 编写Web应用可能是单调的,因为你需要不断的重复某一种模式. Django尝试从model和 template层移除一些单调的情况,但是Web开发者依然会在view(视图)层经历 ...

  8. Python Django CBV下的通用视图函数

    ListView TemplateView DetailView 之前的代码实例基本上都是基于FBV的模式来撰写的,好处么,当然就是简单粗暴..正如: def index(request):retur ...

  9. Django笔记7(通用视图)

    1. 一个呈现静态"关于"页面的URLconf from django.conf.urls.defaults import * from django.views.generic. ...

最新文章

  1. C和指针:第十三,十四章
  2. 从cpp向qml文件传中文字符串的方法
  3. 我最喜欢的IntelliJ IDEA功能
  4. 快速排序——Java
  5. 问道神兵天降服务器维护,问道12月29日全区更新维护1.473公告(转聊吧)
  6. 联想哪款服务器性能,联想深腾7000高性能服务器
  7. 有爱无碍,科技为他们点亮漫天星光
  8. TASKCTL用户权限如何设置
  9. 927. 三等分(每日一难phase2--day26)
  10. 如何计算十五个字节(多字节)的CRC16校验
  11. Fruits 360(水果数据集)
  12. 对话独角兽得物(毒)App CTO 陈思淼:组建技术团队的十件事
  13. axios 注册拦截器 cdn引用_提高传输速度,选p2p加速还是cdn加速呢?
  14. 不看后悔!圈内老手总结的18条嵌入式 C 实战经验
  15. 人人都懂设计模式--Everybody Know Design Patterns : How to comprehend Design Patterns from daily life
  16. 《以太坊攻略》,小白如何逆袭成为技术大咖?要学的全在这里了
  17. 【概念】数据仓库和数仓建模
  18. vs单步调试及断点调试基本介绍
  19. 计算机专业不会编程怎么找工作?
  20. python列表元素筛选_Python如何筛选序列中的元素

热门文章

  1. 高速公路 (Highway,CERC 2006,LA 3720)
  2. 静态库和动态库详解(部分参考别人)
  3. 题目:[NOIP2008]火柴棒等式
  4. ASP.NET 安全认证(三)—— 用Form 表单认证实现单点登录(Single Sign On) .
  5. NHibernate 3.0在PetShop 3层架构中的应用 系列
  6. 虚拟机安装以及PCL的配置(1)
  7. gitbook安装与使用之windows下搭建gitbook平台
  8. [转] MemCached 的 stats 命令
  9. linux学习网站分享
  10. 美国面试之旅——面试经验分享