(三)通用视图(generic views)
Django的通用视图可以减少开发的单调性,它抽象出一些在视图开发中常用的代码和模式,这样就可以在无需编写大量代码的情况下,快速编写出常用的视图函数。下面将使用通用视图重写前面所写的代码。要使用通用视图,我们需要做几件事:
- 修改URLconf
- 编写基于通用视图的视图函数
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)相关推荐
- 深入Django(1): 通用视图 (generic views)
如果对Django的基础部分尚不熟悉,请参考<Django实战>系列. 内容提要 1. 回顾Django的视图函数(view function) 2. 在视图函数中使用模板 3. 简化视图 ...
- django.views.generic通用视图的CreateView, ListView, UpdateView, DetailView, DeleteView用法
导入: from django.views.generic import CreateView, ListView, UpdateView, DetailView, DeleteView 入坑指南 用 ...
- Django基础三之视图函数
Django基础三之视图函数 一 Django的视图函数view 一个视图函数(类),简称视图,是一个简单的Python 函数(类),它接受Web请求并且返回Web响应. 响应可以是一张网页的HTML ...
- Django 学习小组:基于类的通用视图详解(一)
通过三周的时间我们开发了一个简单的个人 Blog,教程地址: 第一周:Django 学习小组:博客开发实战第一周教程 -- 编写博客的 Model 和首页面 第二周:Django 学习小组:博客开发实 ...
- Django 基于类的通用视图详解
原文出处:https://segmentfault.com/a/1190000005685454 Django 学习小组:基于类的通用视图详解(一) 通过三周的时间我们开发了一个简单的个人 Blog, ...
- day 53-1 Django基础三之视图函数
Django基础三之视图函数 本节目录 一 Django的视图函数view 二 CBV和FBV 三 使用Mixin 四 给视图加装饰器 五 Request对象 六 Response对象 一 Djang ...
- django 1.8 官方文档翻译: 3-4-2 基于类的内建通用视图
基于类的内建通用视图 编写Web应用可能是单调的,因为你需要不断的重复某一种模式. Django尝试从model和 template层移除一些单调的情况,但是Web开发者依然会在view(视图)层经历 ...
- Python Django CBV下的通用视图函数
ListView TemplateView DetailView 之前的代码实例基本上都是基于FBV的模式来撰写的,好处么,当然就是简单粗暴..正如: def index(request):retur ...
- Django笔记7(通用视图)
1. 一个呈现静态"关于"页面的URLconf from django.conf.urls.defaults import * from django.views.generic. ...
最新文章
- C和指针:第十三,十四章
- 从cpp向qml文件传中文字符串的方法
- 我最喜欢的IntelliJ IDEA功能
- 快速排序——Java
- 问道神兵天降服务器维护,问道12月29日全区更新维护1.473公告(转聊吧)
- 联想哪款服务器性能,联想深腾7000高性能服务器
- 有爱无碍,科技为他们点亮漫天星光
- TASKCTL用户权限如何设置
- 927. 三等分(每日一难phase2--day26)
- 如何计算十五个字节(多字节)的CRC16校验
- Fruits 360(水果数据集)
- 对话独角兽得物(毒)App CTO 陈思淼:组建技术团队的十件事
- axios 注册拦截器 cdn引用_提高传输速度,选p2p加速还是cdn加速呢?
- 不看后悔!圈内老手总结的18条嵌入式 C 实战经验
- 人人都懂设计模式--Everybody Know Design Patterns : How to comprehend Design Patterns from daily life
- 《以太坊攻略》,小白如何逆袭成为技术大咖?要学的全在这里了
- 【概念】数据仓库和数仓建模
- vs单步调试及断点调试基本介绍
- 计算机专业不会编程怎么找工作?
- python列表元素筛选_Python如何筛选序列中的元素
热门文章
- 高速公路 (Highway,CERC 2006,LA 3720)
- 静态库和动态库详解(部分参考别人)
- 题目:[NOIP2008]火柴棒等式
- ASP.NET 安全认证(三)—— 用Form 表单认证实现单点登录(Single Sign On) .
- NHibernate 3.0在PetShop 3层架构中的应用 系列
- 虚拟机安装以及PCL的配置(1)
- gitbook安装与使用之windows下搭建gitbook平台
- [转] MemCached 的 stats 命令
- linux学习网站分享
- 美国面试之旅——面试经验分享