Django基本视图

下面这三个类也许不能提供项目所需的所有的功能,这些应用于基于类的视图或Mixins情形下。

大多数Django的内建视图继承于其他基于类的视图或者各种mixins中,因为继承链是很重要的。

View

  class django.views.generic.base.View

这是基于类视图的主控类,所有的其他的基于类的视图都这个基类。严格来说他不是一个通用视图,但也可被导入。

Method Flowchart 方法流程图

  1. dispatch()

  2. http_method_not_allowed()

  3. options()

属性:

  http_method_names

这个视图接受的HTTP方法名,默认为(get,post,put,patch,delete,head,options,trace)

方法:

  classmethod as_view(**initkwargs)

返回一个可调用的视图,接受一个request,会返回一个response。

response=MyView.as_view()(request)

返回的view拥有view_class和view_initkwargs属性

在请求/响应的周期内,当这个视图被调用,HttpResquest被分配到这个View的request属性上。从URL pattern上捕获的任何位置或者关键字参数,将会被分配到args和kwargs属性上,之后ispatch()被调用。

  dispatch(request,*args,**kwargs)

这个方法接收一个request参数以及其他参数,返回一个HTTP response。

这个方法的默认实现将会检查HTTP方法并尝试委托匹配该HTTP方法的方法。GET将会委托给get()方法。POST委托为post()。

默认情况下HEAD请求将会委托给get(),如果需要可以覆写。

  http_method_not_allowed(request, *args, **kwargs)

如果一个HTTP方法不被支持,该方法将会被调用,默认实现是返回一个HttpResponseNotAllowed。

options(request, *args, **kwargs)

    处理这针对OPTIONS HTTP verb的请求的相应,返回一个响应,允许头部包含视图允许的HTTP方法名的列表。

TemplateView

  class django.views.generic.base.TemplateView

    渲染一个给定的模板,并伴随一个上下文,包含了从URL中捕获的参数。

    这个视图继承的方法和属性来自下面这些视图:

  django.views.generic.base,TemplateResponseMixin

  django.views.generic.base.ContextMixin

  django.views.generic.base.View

Method Flowchart 方法流程图

  1. dispatch()

  2. http_method_not_allowed()

  3. get_context_data()

  从URL pattern捕获的关键字参数进行填充(通过ContextMixin)

  你也可以extra_context关键字为这个as_view添加上下文。

RedirectView

  class django.views.generic.base.RedirectView

    重定向给定的URL。

    这个给定的URL可能包含字典样式的格式化字符串,从URL上捕获的参数将据此进行插入。因为关键字插入总是要做的,即使没有参数被传入。在URL中的任何%字符必须写成%%,以便能够输出单个%。

    这个视图继承的方法和属性来自以下视图:

django.views.generic.base.View

Method Flowchart 方法流程图

  1. dispatch()

  2. http_method_not_allowed()

  3. get_redirect_url()

属性:

  url

   重定向的URL,为一个字符串,或者None,抛出一个410 HTTP ERROR。

  pattrern_name

     重定向的URL pattern名,和使用args和kwargs一样,被传入到这个视图,将会进行revsering。

  permanent

    重定向是否是永久的,这个唯一的不同的是返回的状态码不同。如果为True,这个重定向将使用301的状态码,如果为False,这个重定向将使用302的状态码,默认为False。

  query_string

   是否将GET查询字符串传递进去。如果为True,这个字符串将会添加到URL后面,如果为False,将会被丢弃。

方法:

  get_redirect_url(*args, **kwargs)

  构造重定向的目标URL。

Django基本视图的更多相关文章

  1. 【Django】 视图层说明

    [Django视图层] 视图层的主要工作是衔接HTTP请求,Python程序和HTML模板,使他们能够有机互相合作从模型层lou到数据并且反馈.说到视图层的工作就有以下几个方面要说 ■ URL映射 对 ...

  2. Django之视图

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

  3. Django通用视图APIView和视图集ViewSet的介绍和使用

    原 Django通用视图APIView和视图集ViewSet的介绍和使用 2018年10月21日 14:42:14 不睡觉假扮古尔丹 阅读数:630   1.APIView DRF框架的视图的基类是 ...

  4. Django之视图函数总结

    Django之视图函数总结 HttpRequest与HttpResponse http请求中产生两个核心对象: HttpRequest对象:用户请求相关的所有信息(对象) HttpResponse对象 ...

  5. Django _VIEW视图_源码分析

    Django _VIEW视图: 1. 点击as_view方法. 第二步: as_view () 为VIEW 类里定义的,到时候我们定义业务逻辑的类就继承这个VIEW类. view方法内返回的是disp ...

  6. Django的视图层简介

    Django的视图层 视图函数 所谓视图函数,其实就是我们Django项目中各个应用中的views.py文件中定义的每个用来处理URL路由映射到这里的逻辑函数.一个视图函数简称视图,它是个简单的Pyt ...

  7. django views视图函数返回值 return redirect httpresponse总结

    django views视图函数返回值 return redirect  render httpresponse总结

  8. Django的视图流式响应机制

    Django的视图流式响应机制 Django的响应类型:一次性响应和流式响应. 一次性响应,顾名思义,将响应内容一次性反馈给用户.HttpResponse类及子类和JsonResponse类属于一次性 ...

  9. Django的视图响应类型

    Django的视图响应类型 一. 视图函数编写原则 视图函数接受HTTP请求并返回响应,可以放在任何地方,可以是任何功能:视图函数可以返回Web文本,页面.重定向.错误.图片等任何内容:视图函数通过H ...

随机推荐

  1. iOS中 扫描二维码/生成二维码详解 韩俊强的博客

    最近大家总是问我有没有关于二维码的demo,为了满足大家的需求,特此研究了一番,希望能帮到大家! 每日更新关注:http://weibo.com/hanjunqiang  新浪微博 指示根视图: se ...

  2. 【一天一道LeetCode】#118. Pascal's Triangle

    一天一道LeetCode 本系列文章已全部上传至我的github,地址:ZeeCoder's Github 欢迎大家关注我的新浪微博,我的新浪微博 欢迎转载,转载请注明出处 (一)题目 Given n ...

  3. UNIX环境高级编程——线程同步之读写锁以及属性

    读写锁和互斥量(互斥锁)很类似,是另一种线程同步机制,但不属于POSIX标准,可以用来同步同一进程中的各个线程.当然如果一个读写锁存放在多个进程共享的某个内存区中,那么还可以用来进行进程间的同步, 互 ...

  4. 【一天一道LeetCode】索引目录 ---C++实现

    [一天一道LeetCode]汇总目录 这篇博客主要收藏了博主所做题目的索引目录,帮助各位读者更加快捷的跳转到对应题目 目录按照难易程度:easy,medium,hard来划分,读者可以按照难易程度进行 ...

  5. python的IndentationError: unexpected indent python

    都知道python是对格式要求很严格的,写了一些python但是也没发现他严格在哪里,今天遇到了IndentationError: unexpected indent错误我才知道他是多么的严格.    ...

  6. 【Python】Talk Python To Me Podcast播客

    这是Python相关的一个播客,通过播客的形式给大家讲述python那点事,相关的链接都会列出来,有一些是由文本内容的,如果听不太懂就看看英文原文.不fanqiang的情况下,网页打开没有问题,但是播 ...

  7. Android Widget 开发详解(二) +支持listView滑动的widget

    转载请标明出处:http://blog.csdn.net/sk719887916/article/details/47027263 不少开发项目中都会有widget功能,别小瞧了它,他也是androi ...

  8. 【翻译】Ext JS 5.0.1 中的新功能

    原文:What's New in Ext JS 5.0.1 今天,我们很高兴的宣布Ext JS 5.0.1发布了!此维护版本基于Sencha社区的反馈做了一些改进.下面让我们来了解一下这些改变. 可访 ...

  9. 如何实现 集群化/Session 复制-doc(cluster-howto.html)

    源文档链接: http://tomcat.apache.org/tomcat-6.0-doc/cluster-howto.html 翻译日期: 2014年3月19日 翻译人员: 铁锚 感受: Tomc ...

  10. DigitalClock的替代者TextClock

    DigitalClock在API 17(Android4.2)中就被官方定义为过时的方法,很奇怪为什么现在很多的网上的帖子都介绍DigitalClock方法的使用(已经过时),如果你想让自己的应用在高 ...