Django - 通用视图】的更多相关文章

原 Django通用视图APIView和视图集ViewSet的介绍和使用 2018年10月21日 14:42:14 不睡觉假扮古尔丹 阅读数:630   1.APIView DRF框架的视图的基类是 APIView APIView的基本使用和View类似 Django默认的View请求对象是 HttpRequest,REST framework 的请求对象是 Request. Request对象的数据是自动根据前端发送数据的格式进行解析之后的结果. HttpRequest.GET ————> R…
使用通用视图后,Django请求处理过程(以ListView为例):在我们自定义的视图中: class IndexView(ListView): template_name = 'blog/index.html' context_object_name = 'article_list' def get_context_data(self, **kwargs): kwargs['category_list'] = Category.objects.all() return super(IndexV…
这周是我入职的第一周,入职第一天看到嘉兴大佬的项目代码.视图中有类方法,我感到很困惑. 联想到之前北京融360的电话面试,问我有无写过类方法……看来有必要了解下视图的类方法,上网搜了很多,原来这就是所谓的“通用视图”. 上班是大小周,这周刚好只上5天:所以早上睡得很晚.好像没什么时间详细写这方面的博客,以后有时间会写的.你可以看看下面的参考文章,我觉得也写得不错. 你可以看我的git代码,如果你有点django基础的话,比如基础的def视图,相信是看得懂的,我也写了很多注释. GIT网址:htt…
通用视图 1. 前言 回想一下,在Django中view层起到的作用是相当于controller的角色,在view中实施的 动作,一般是取得请求参数,再从model中得到数据,再通过数据创建模板,返回相应 响应对象.但在一些比较通用的功能中,比如显示对象列表,显示某对象信息,如果反复 写这么多流程的代码,也是一件浪费时间的事,在这里,Django同样给我们提供了类似的 "shortcut"捷径--通用视图. 2. 使用通用视图 使用通用视图的方法就是在urls.py这个路径配置文件中进…
上一节我们介绍了django视图函数里面几个常用的函数,这节我们来看一下django为我们提供的一些通用视图吧 在最后面有我自己的示例代码,html部分太多了就不贴了 “简单”视图函数 正如名字所言,简单视图函数封装在django.views.generic.simple模块里面,主要有direct_to_template和redirect_to两个简单视图函数,主要使用范围是:没有任何的视图逻辑,仅仅需要重定向一个url django.views.generic.simple.direct_t…
django支持类视图,与此同时django为我们提供了许多非常好用的通用视图供我们使用,这其中TemplateView.ListView和DetailView是我们经常使用到的,这里就对TemplateView和ListView做一个简单的介绍 TemplateView:模板视图在Django项目中,我们经常会使用到静态页面,也就是这个页面内的内容是写死的,不需要其他数据的渲染,完成这个任务的时候TemplateView就是一个非常好的选择,例如我们做一个网站肯定需要写一个‘关于本网站’的页面…
1.APIView DRF框架的视图的基类是 APIView APIView的基本使用和View类似 Django默认的View请求对象是 HttpRequest,REST framework 的请求对象是 Request. Request对象的数据是自动根据前端发送数据的格式进行解析之后的结果. HttpRequest.GET ----> Request.query_params HttpRequest.POST .HttpRequest.body----> Request.data Dja…
urls.py from . import views ... url(r'^$', views.IndexView.as_view, name="index"), url(r'^(?P<pk>\d+)$', views.DetailView.as_view(), name="detail"), #DetailView会从url中捕获pk的值,一定要是pk! views.py from django.views import generic from .…
Django中自带了sitemap框架,用来生成xml文件 Django sitemap演示: sitemap很重要,可以用来通知搜索引擎页面的地址,页面的重要性,帮助站点得到比较好的收录. 开启sitemap功能的步骤 settings.py文件中django.contrib.sitemaps和django.contrib.sites要在INSTALL_APPS中 INSTALLED_APPS = ( 'django.contrib.admin', 'django.contrib.auth',…
Django 1.6 基于类的通用视图 最初 django 的视图都是用函数实现的,后来开发出一些通用视图函数,以取代某些常见的重复性代码.通用视图就像是一些封装好的处理器,使用它们的时候只须要给出特定的参数集即可,不必关心具体的实现.各种通用视图的参考参见:https://docs.djangoproject.com/en/1.6/ref/class-based-views/然后函数式视图的缺点——难以扩展和自定义,开始显现出来.于是 1.3 起 django 开始用类视图来实现通用视图.较于…
创建一个通用视图   抽取出我们代码中共性的东西是一个很好的编程习惯. 比如,像以下的两个Python函数:     def say_hello(person_name): print 'Hello, %s' % person_name def say_goodbye(person_name): print 'Goodbye, %s' % person_name 我们可以把问候语提取出来变成一个参数:     def greet(person_name, greeting): print '%s…
修改detail.html,将它变为一个可用的投票页面 <h1>{{ question.question_text }}</h1> {% if error_message %}<p><strong>{{ error_message }}</strong></p>{% endif %} <form action="{% url 'polls:vote' question.id %}" method="…
上一节完成了视图编写,这一节为应用添加投票功能,也就是表单提交. 5.1编写一个简单的表单 5.2使用通用视图 5.3改良视图 5.1编写一个简单的表单 在网页设计中添加Form元素 polls/templates/polls/detail.html <h1>{{ question.question_text }}</h1> {% if error_message %}<p><strong>{{ error_message }}</strong>…
ListView TemplateView DetailView 之前的代码实例基本上都是基于FBV的模式来撰写的,好处么,当然就是简单粗暴..正如: def index(request): return HttpResponse('hello world') 上面的写法,基本接触不到视图函数里面的通用视图.只是在介绍CBV的时候稍微介绍了下引用,大概用法. 导入 之前的导入一直用的是 from django.views import View 这里从view下钻一下会发现: from djan…
在早期,我们认识到在视图开发过程中有共同的用法和模式.这时我们引入基于函数的通用视图来抽象这些模式以简化常见情形的视图开发. 基于函数视图的用法有以下三种: def index(request): return HttpResponse('hello world!') def index(request): result = {'demo':'demo'} return render(request, 'blog/about.html', result) def index(request):…
表单的编写 1. detail.html模版的编写 <h1>{{ poll.question }}</h1> {% if error_message %}<p><strong>{{ error_message }}</strong></p>{% endif %} <form action="{% url 'polls:vote' poll.id %}" method="post">…
本教程接Part3开始.继续网页投票应用程序,并将重点介绍简单的表单处理和精简代码. 一个简单表单 更新一下在上一个教程中编写的投票详细页面的模板polls/detail.html,让它包含一个HTML<form> 元素: # polls/templates/polls/detail.html <h1>{{ question.question_text }}</h1> {% if error_message %}<p><strong>{{ err…
最初 django 的视图都是用函数实现的,后来开发出一些通用视图函数,以取代某些常见的重复性代码.通用视图就像是一些封装好的处理器,使用它们的时候只须要给出特定的参数集即可,不必关心具体的实现.各种通用视图的参考参见:https://docs.djangoproject.com/en/1.6/ref/class-based-views/ 然 后函数式视图的缺点——难以扩展和自定义,开始显现出来.于是 1.3 起 django 开始用类视图来实现通用视图.较于函数,类能够更方便的实现继承和 mi…
01-介绍 通用视图把视图开发中常用的写法和模式抽象出来,让你编写少量代码就能快速实现常见的数据视图.显示对象列表就是这样一种任务. Django 自带的通用视图能实现下述功能: 1.列出对象并显示单个对象的详细信息.如果创建一个管理会议的应用程序,那么 TalkListView 和 Reg- isteredUserListView 就是列表视图.某一个演讲的页面就是详细信息视图. 2.呈现基于日期的对象,显示为年月日归档页面(带有详细信息),以及“最新”页面. 3.让用户创建.更新和删除对象—…
一.GenericAPIView GenericAPIView扩展了APIView,为标准列表和详细视图添加了常见的行为. 提供的每个具体通用视图都是一个GenericAPIView或多个mixin类组合在一起而构建的. 例如: BookView视图类继承自: ListModelMixin:用于显示所有图书 CreateModelMixin:添加一本书 GenricAPIView:继承自APIView,提供as_view()等,获取当前视图类中queryset和serializer_class…
Django基本视图 下面这三个类也许不能提供项目所需的所有的功能,这些应用于基于类的视图或Mixins情形下. 大多数Django的内建视图继承于其他基于类的视图或者各种mixins中,因为继承链是很重要的. View class django.views.generic.base.View 这是基于类视图的主控类,所有的其他的基于类的视图都这个基类.严格来说他不是一个通用视图,但也可被导入. Method Flowchart 方法流程图 1. dispatch() 2. http_metho…
引文 所有的类视图都继承django.views.generic.base.View类. 在URLconf中简单的使用通用视图 如果只是简单的做一些属性修改,可以使用as_view()方法,如下所示: from django.urls import path from django.views.generic import TemplateView urlpatterns = [ path('about/', TemplateView.as_view(template_name="about.h…
FBV FBV(function base views) 就是在视图里使用函数处理请求. 在之前django的学习中,我们一直使用的是这种方式,所以不再赘述. CBV CBV(class base views) 就是在视图里使用类处理请求. Python是一个面向对象的编程语言,如果只用函数来开发,有很多面向对象的优点就错失了(继承.封装.多态).所以Django在后来加入了Class-Based-View.可以让我们用类写View.这样做的优点主要下面两种: 提高了代码的复用性,可以使用面向对…
处理表单通常包含3步: 初始化GET(空白的后者预填充的表单) POST非法数据(通常重新显示带有错误信息的表单) POST合法数据(提交数据并重定向) 为了将你从这些烦人的重复步骤中解救出来,Django为表单提供了一类通用视图 基础表单 这是一个简单的联系表单: 1 2 3 4 5 6 7 8 9 10 # forms.py from django import forms   class ContactForm(forms.Form):     name = forms.CharField…
在web开发中,最令人头痛的就是一遍又一遍的重复固定的模式.在解决了模板层面和模型层面的重复代码之痛之后,Django使用通用视图来解决视图层面的代码重复. 扩展通用视图 毫无疑问通用视图可以大幅度地加速web开发,但是在许多项目中,总是有通用视图不够用的时候.确实,现今的Django开发者们需要知道如何让通用视图可以处理更多的纷繁复杂的场景. 这是1.3版本的通用视图被重新设计的原因之一.以前,通用视图只是一些带有一些扑朔迷离选择的视图函数,现在更加推荐的方法是通过继承.重写属性或方法来扩展视…
一.Django的视图函数view 一个视图函数(类),简称视图,是一个简单的Python函数(类),它接受WEB请求并返回Web响应. 响应可以是一张网页的HTML内容,一个重定向,一个404错误,一个XML文档,或者一张图片. 无论视图本身包含什么逻辑,都要返回响应.代码写在哪里也无所谓,只要它在你当前项目目录下面.除此之外没有更多要求了---可以说"没有什么神奇的地方".为了将代码放在某处,大家约定成俗将视图放置在项目(project)或应用程序(app)目录中的名为views.…
看了刘江老师教程这么多天,卧槽,我才发现他也曾跻身于行伍之间,interesting 刘老师这波讲解很到位,告诉你如何编写单例视图的时候忽然告诉你,其实不用这么麻烦,我们有通用视图,那些总是要做相似的行为的视图,咱们就写一个好了,解放生产力不就是进步吗? 好的废话不说进入正题,先修改一波detail.html模板 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&…
参考官网的投票系统,按照综合案例的流程创建应用polls,主要模块代码如下: test1/polls/models.py import datetime from django.db import models from django.utils import timezone # Create your models here. class Questions(models.Model): question_text = models.CharField(max_length=200) pub…
[Django视图层] 视图层的主要工作是衔接HTTP请求,Python程序和HTML模板,使他们能够有机互相合作从模型层lou到数据并且反馈.说到视图层的工作就有以下几个方面要说 ■ URL映射 对于一般的,通过django.conf.urls.url设置url路径,并且关联视图函数,甚至把url方法的参数写成正则表达式从而可以给视图函数传递多个参数的事情就不多说了.比如: url(r'^single/([0-9]{4})/([0-9]{2})/([0-9]+)/$',views.single…
Django之视图   Django的View(视图) 一个视图函数(类),简称视图,是一个简单的Python 函数(类),它接受Web请求并且返回Web响应. 响应可以是一张网页的HTML内容,一个重定向,一个404错误,一个XML文档,或者一张图片. 无论视图本身包含什么逻辑,都要返回响应.代码写在哪里也无所谓,只要它在你当前项目目录下面.除此之外没有更多的要求了——可以说“没有什么神奇的地方”.为了将代码放在某处,大家约定成俗将视图放置在项目(project)或应用程序(app)目录中的名…