Views

作者: xncode | 来源:发表于2017-08-29 15:24 被阅读0次

    APIView是django的原生(View)[https://www.jianshu.com/p/327b40458a1f]的子类

    通过重载as_view和dispatch

    类变量

    renderer_classes
    parser_classes
    authentication_class
    throttle_classes
    permission_class
    content_negotiation_class
    metadata_class
    versioning_class

    方法

    as_view

    另外设置了view函数的cls initkwargs

    dispatch

    设置了对象的变量 'args', 'kwargs', 'request'
    调用initialize_request
    设置了对象的变量 request headers
    调用initial
    调用用户函数,获取response
    调用finalize_response,设置response到对象变量并返回

    initialize_request

    所接收的是django原生request

    构建Request,接收参数有request,parsers,authenticators,negotiator,parser_context
    分别对应parser_classes authentication_classes content_negotiation_class和一个包含了view args kwargs的parser_context

    initial

    所接收的是通过initialize_request构建好的Request

    获取format_kwarg,从url中捕获得到,默认为format名称参数
    进行内容协商,设置request的accepted_renderer accepted_media_type
    获取version,设置request的version versioning_scheme
    进行认证
    校验权限
    校验流量

    finalize_response

    如果返回的是Response,则确保设置了accepted_renderer accepted_media_type renderer_context
    更新头部信息

    相关文章

      网友评论

          本文标题:Views

          本文链接:https://www.haomeiwen.com/subject/nhwodxtx.html